現在的生活中運用互聯網的有好多地方,我們既要申請微博,申請博客,申請郵箱等等;哪怕登錄一個小網址看點東西都要注冊登錄,不過現在好多了;有了第三方登錄,再也不用擔心這不夠用的腦子整天記憶賬號和密碼了,只要有qq,一般情況下都能解決,既方便又快捷。
我呢,這幾天就開始接觸這個東西,開始學,一邊學一邊記吧算是。
一.OAuth開放式授權
OAuth is short for Open Authorization
這個東西是什么呢,就是讓第三方網站在不知道用戶qq號和密碼的情況下也能登錄。下面就用一個圖來說明一下它的運行機制吧
其特點就是開放 安全 簡易
二、功能
OAuth1.0版本發布於2007年末:該版本有缺陷,曾經因為這個缺陷使一個公司損失巨大,現在已經不用。
OAuth2.0版本發布於2010年初:至今仍在使用。
QQ用戶授權第三方網站使用其QQ賬號相關的信息
獲取授權后,在符合權限規則的情況下訪問各種API;如一鍵分享。
第三方登錄並不會將用戶信息拷貝一份放在自己的數據庫,那樣大家都會覺得不安全了。只是利用了一個OAuth平台來完成這個功能
三、三個重要步驟
第三方頁面請求QQ的OAuth頁面
用戶在OAuth頁面輸入qq號和密碼
騰訊QQ的OAuth頁面將登陸結果返回給第三方網站
(1)、請求OAuth登錄頁
Request Token URL--未授權的令牌請求服務地址
第三方網站請求QQ登陸頁面時須使用帶有特定參數的URL。
每個第三方網站接入QQ登陸之前需要到QQ互聯官網注冊一下(https://connect.qq.com/),提交一份申請的材料。說明一下接入站點的描述,域名,回調地址等。通過之后會得到一組APPID 和APPKEY.
例如以下地址:
https://graph.qq.com/oauth/......?......&client_id=100493579&......&redirect_uri=http:/www.weibo.com/......
這里的clirnt_id對應的就是APPID。OAuth頁面可以通過這個APPID來判斷這個站點是不是已經注冊過的平台,並不是每個站點都可以使用。
(2)、用戶使用QQ號登陸並授權
上面的redirect_uri就是回調地址,在用戶登錄成功后跳轉的頁面。
http://www.weibo,com/user.qqcallback?code=xxxxxxxxxxxxx.....
(3)、返回登錄結果
在php頁面可以獲取上面地址中的code大致可以確定登錄了。但是為了更加安全,所以需要第三方網站再次請求一個URL地址(用戶授權的令牌請求服務地址);用戶QQ登錄授權之后需要請求 的一個帶有特定參數的URL,這個URL中有參數APPID和APPKEY,又多了一個第三方站點與騰訊QQ的OAuth頁面的交互,使code的傳輸更加安全。(code在有限時間內有效,一般時間不超過一分鍾)
四、AccessToken
當登錄之后第三方站點拿到一個當前用戶的AccessToken,有這個AccessToken就可以調用相應的API了。每次訪問API都要拼接一個URL,並且都要用上AccessToken作為令牌,為了安全也一般會 用POST方式。
可以將返回的數據用以下方法轉換成PHP對象
AccessToken--具有較長生命周期(10天或者更長)
過期之后有兩種方法重新獲取:
1.重新用qq號登錄
2.User Authorization URL中指定參數 ....&need_refresh_token=true&......意為在返回結果中需要攜帶一個AccessToken。
更加專業的術語我就不照搬了,我按照我理解的方式簡單的說了一下這個第三方登錄的前奏,想了解更多的OAuth知識的話可以
戳這里-->http://wiki.connect.qq.com/oauth2-0%E7%AE%80%E4%BB%8B
關於第三方登錄我還會繼續添加內容的,這只是個開始哦