如今的生活中運用互聯網的有好多地方,咱們既要申請微博,申請博客,申請郵箱等等;哪怕登陸一個小網址看點東西都要註冊登陸,不過如今好多了;有了第三方登陸,不再用擔憂這不夠用的腦子成天記憶帳號和密碼了,只要有qq,通常狀況下都能解決,既方便又快捷。php
我呢,這幾天就開始接觸這個東西,開始學,一邊學一邊記吧算是。數據庫
一.OAuth開放式受權安全
OAuth is short for Open Authorization 網站
這個東西是什麼呢,就是讓第三方網站在不知道用戶qq號和密碼的狀況下也能登陸。下面就用一個圖來講明一下它的運行機制吧spa
其特色就是開放 安全 簡易code
2、功能對象
OAuth1.0版本發佈於2007年底:該版本有缺陷,曾經由於這個缺陷使一個公司損失巨大,如今已經不用。blog
OAuth2.0版本發佈於2010年初:至今仍在使用。token
QQ用戶受權第三方網站使用其QQ帳號相關的信息生命週期
獲取受權後,在符合權限規則的狀況下訪問各類API;如一鍵分享。
第三方登陸並不會將用戶信息拷貝一份放在本身的數據庫,那樣你們都會以爲不安全了。只是利用了一個OAuth平臺來完成這個功能
3、三個重要步驟
第三方頁面請求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在有限時間內有效,通常時間不超過一分鐘)
4、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
關於第三方登陸我還會繼續添加內容的,這只是個開始哦