搜尋
首頁資料庫mysql教程新浪OAuth网站登陆连接,请求access

新浪OAuth网站登陆连接,请求access

Jun 07, 2016 pm 03:39 PM
accessoauth新浪登陸網站請求連接

本文的环境仅仅是针对最新的新浪oauth2.0, 早期的1.0方式我不太了解,也不在本文的范畴内。 解决方案给出两种: 1 ,描述解决思路,各位自己去实现。 2 ,给出我开发好的asp.net 4.0 dll,直接傻瓜化加载使用。 当时,我把电脑屏幕翻转了180度,想看看新浪

本文的环境仅仅是针对最新的新浪oauth2.0, 早期的1.0方式我不太了解,也不在本文的范畴内。

解决方案给出两种: 1,描述解决思路,各位自己去实现。  2,给出我开发好的asp.net 4.0 dll,直接傻瓜化加载使用。

 

当时,我把电脑屏幕翻转了180度,想看看新浪的文档里面是不是有些什么隐藏说明(因为有先例:九阳真经就是这么来的),要不然为什么我已经正确提交了各个POST参数,依然得到: '{"error":"invalid_request","error_code":21323,"request":"/2/oauth2/access_token","error_uri":"/2/oauth2/access_token","error_description":"miss client id or secret"}'  这样的错误提示。

 

一切都已经按照文档的说来做了,参见:http://open.weibo.com/wiki/OAuth2/access_token。 我自视水平不高,虽然是个初学者,但是这样的配置还是能够搞定的,可结果偏偏还是错误。


我也不想再列举自己的各种证据了,需要搭建的环境太麻烦,没那功夫,反正遇到这问题的人多的是,搜一搜别人的例子就知道,都是一样的遭遇。

 

我始终认为是我的错误,而不是新浪的错误,所以,电脑屏幕翻转了180度,没发现什么特别的隐藏说明,接着又拿一块大镜子来看镜像,还是没发现什么,最后使出了绝招:  把文档的所有文字按照奇数和偶数都排列着读一遍,依旧无解。 终于: 我开始觉得不是我的错了,而是新浪的错。

 

文档中有这么一句提示:

HTTP请求方式:POST

这句话太简单了,你们想要人家POST什么?让人认为所有的参数都要作为POST发送过去。可事实偏偏不是这样的, OAuth的服务端只要看到本次提交的行为是POST就行, 至于POST集合里面有没有数据,有些什么数据,它才不会管,所以,无论我们在POST里面添加了什么键|值、无论怎么切换顺序,都是错误的,因为它就没有去读取。

 

解决办法只有本着死马当活马医的态度: 乱搞!

最终还是让我发现了----需要使用GET和POST的混合方式来提交

 

提交的地址应该是:

"https://api.weibo.com/oauth2/access_token?client_id={0}&client_secret={1}&grant_type=authorization_code&code={2}&redirect_uri={3}"


请求方式:POST

POST中的数据:空!

 

 0,1,2,3 对应你自己的参数值

 

就是这样,终于正确获得token值,服务器只管你的method是POST就行了,你的实际参数都是在GET里面的。

顺便提一下: 如果采用basic方式在http头中添加key和secret, 最后依然是大同小异的错误,只不过是提示变成了找不到你的redirect_uri参数。

 

好了,解决思路说完了。如果你不愿自己动手,并且你也和我一样是ASP.NET 4.0开发的话,可以接着往下看:

 

下载地址:http://files.cnblogs.com/kvspas/SinaOAuth_20111230_v1.zip

组件中已经封装好了直接获取用户基本信息的功能,并且已经强类型化。

组件的一部分功能使用了JSON.NET库(http://json.codeplex.com/)

使用办法:


首先,必须保证运行环境是4.0,因为解析JSON的方式涉及到dynamic类型

 

1: 页面1

using SinaOAuth;

//第一步,将用户引导到新浪微博登陆地址
var login = new SinaOAuthLogin("你的key""你的回调地址");

Response.Redirect(login.SinaOAuthLoginUri);

 

 2:页面2

using SinaOAuth;

//第二步,这个页面来自新浪跳转过来,也就是上一步中你设置的回调地址
//本页面的url格式应该是这样的:
//http://www.abc.com/sinaoauth.aspx?code=427bbf62b4b91339951b436c4880e9ef

var code = Request.QueryString["code"];

SinaOAuthApi s = new SinaOAuthApi("你的key""你的secret""你的回调地址");

var tokenValue = s.RequestTokenData(code); //包含了uid、expires_in、access_token,请求其它API时候使用
       
var user = s.RequestUserInfo; //获取用户基本信息

Response.Write(user.name);

 

好了,就这么简单。 最核心的身份验证部分已经帮你通过了,其它的API就由你自由发挥了。

使用其它语言的朋友请参照解决思路自行编码。

 

这是新浪API团队设计思维上的一个BUG,之所以说是“设计思维”上,是因为没有对生产环境的运行带来坏处,但是这样的文档说明存在二义性、POST不是POST,GET不是GET的机制,难以专业化, 这个系统还有很大的改善空间。

 

 

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL:初學者的基本技能MySQL:初學者的基本技能Apr 18, 2025 am 12:24 AM

MySQL適合初學者學習數據庫技能。 1.安裝MySQL服務器和客戶端工具。 2.理解基本SQL查詢,如SELECT。 3.掌握數據操作:創建表、插入、更新、刪除數據。 4.學習高級技巧:子查詢和窗口函數。 5.調試和優化:檢查語法、使用索引、避免SELECT*,並使用LIMIT。

MySQL:結構化數據和關係數據庫MySQL:結構化數據和關係數據庫Apr 18, 2025 am 12:22 AM

MySQL通過表結構和SQL查詢高效管理結構化數據,並通過外鍵實現表間關係。 1.創建表時定義數據格式和類型。 2.使用外鍵建立表間關係。 3.通過索引和查詢優化提高性能。 4.定期備份和監控數據庫確保數據安全和性能優化。

MySQL:解釋的關鍵功能和功能MySQL:解釋的關鍵功能和功能Apr 18, 2025 am 12:17 AM

MySQL是一個開源的關係型數據庫管理系統,廣泛應用於Web開發。它的關鍵特性包括:1.支持多種存儲引擎,如InnoDB和MyISAM,適用於不同場景;2.提供主從復制功能,利於負載均衡和數據備份;3.通過查詢優化和索引使用提高查詢效率。

SQL的目的:與MySQL數據庫進行交互SQL的目的:與MySQL數據庫進行交互Apr 18, 2025 am 12:12 AM

SQL用於與MySQL數據庫交互,實現數據的增、刪、改、查及數據庫設計。 1)SQL通過SELECT、INSERT、UPDATE、DELETE語句進行數據操作;2)使用CREATE、ALTER、DROP語句進行數據庫設計和管理;3)複雜查詢和數據分析通過SQL實現,提升業務決策效率。

初學者的MySQL:開始數據庫管理初學者的MySQL:開始數據庫管理Apr 18, 2025 am 12:10 AM

MySQL的基本操作包括創建數據庫、表格,及使用SQL進行數據的CRUD操作。 1.創建數據庫:CREATEDATABASEmy_first_db;2.創建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入數據:INSERTINTObooks(title,author,published_year)VA

MySQL的角色:Web應用程序中的數據庫MySQL的角色:Web應用程序中的數據庫Apr 17, 2025 am 12:23 AM

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

mysql:構建您的第一個數據庫mysql:構建您的第一個數據庫Apr 17, 2025 am 12:22 AM

構建MySQL數據庫的步驟包括:1.創建數據庫和表,2.插入數據,3.進行查詢。首先,使用CREATEDATABASE和CREATETABLE語句創建數據庫和表,然後用INSERTINTO語句插入數據,最後用SELECT語句查詢數據。

MySQL:一種對數據存儲的初學者友好方法MySQL:一種對數據存儲的初學者友好方法Apr 17, 2025 am 12:21 AM

MySQL適合初學者,因為它易用且功能強大。 1.MySQL是關係型數據庫,使用SQL進行CRUD操作。 2.安裝簡單,需配置root用戶密碼。 3.使用INSERT、UPDATE、DELETE、SELECT進行數據操作。 4.複雜查詢可使用ORDERBY、WHERE和JOIN。 5.調試需檢查語法,使用EXPLAIN分析查詢。 6.優化建議包括使用索引、選擇合適數據類型和良好編程習慣。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具