騰訊微博OAuth2.0認證介紹

目錄

騰訊微博OAuth2.0認證介紹

騰訊微博開放平臺,是基於騰訊微博系統,爲廣大開發者和用戶提供的開放數據分享與傳播平臺。 php

廣大開發者和用戶登陸平臺後,就可使用平臺提供的開放API接口,建立應用從微博系統獲取信息,或將新的信息傳播到整個微博系統中,豐富多樣的API接口和應用,加上您的智慧,將創造出無窮的應用和樂趣。 api

在使用騰訊微博平臺提供的API前,您須要作如下兩步工做: 瀏覽器

  1. 成爲開發者,並申請appkey和appsecret
  2. 受權獲取accesstoken

Accesstoken是第三方得到用戶受權的憑證,是第三方訪問api資源的票據。目前,騰訊微博採用Oauth2.0協議對第三方進行受權,相對Oauth1.0來講,Oauth2.0具備更加簡單和安全特色。 安全

關於Oauth2.0的詳細介紹,請參考Oauth2.0協議標準
若是您須要使用Oauth1.0受權,請參考騰訊微博Oauth1.0受權協議服務器

獲取accesstoken的兩種方式

用戶經過Oauth2.0受權第三方有兩種方式: session

  1. Authorization code grant,適合於有server端的應用受權
  2. Implicit grant,適合於經過客戶端訪問的應用受權

Authorization cod模式和Implicit模式僅在受權的時候有所區別,後續調用API的方式是一致的。 app

1.Authorization code grant

使用場景:
Authorization code受權適用於PC,無線客戶端等須要和第三方server進行交互的應用場景。使用Authorization code受權,第三方可以集中處理用戶的受權請求和受權結果,適用於有server端的應用。 url

受權流程:
Authorization code受權模式分爲兩步,首先獲取code,而後用code換取accesstoken。官方流程示意圖: spa

oauth2_4.gif
交互圖: oauth2_code.gif

第一步:請求code

請求方法:
GET .net

請求地址:

https://open.t.qq.com/cgi-bin/oauth2/authorize?client_id=APP_KEY&response_type=code&redirect_uri=http://www.myurl.com/example

請求參數:

字段 必須 說明
client_id true 申請應用時分配的app_key
redirect_uri true 受權回調地址,必須和應用註冊的地址一致
response_type true 受權類型,爲code
wap false 主要用於指定手機受權頁的版本,無此參數默認顯示pc受權頁面

wap=1時,跳轉到wap1.0的受權頁
wap=2時,跳轉到wap2.0的受權頁
不帶本參數時,手機訪問默認跳到wap2.0的受權頁

state false 用於保持請求和回調的狀態,受權請求成功後原樣帶回給第三方。該參數用於防止csrf攻擊(跨站請求僞造攻擊),強烈建議第三方帶上該參數。參數設置建議爲簡單隨機數+session的方式
forcelogin false 針對pc受權頁
forcelogin=true,強制彈出登陸受權頁面 forcelogin=false,用戶已經登陸而且已經受權第三方應用,則再也不彈出受權頁面
默認爲forcelogin=true

返回結果:
若是受權成功,受權服務器會將用戶的瀏覽器重定向到redirect_uri,並帶上code,openid和openkey等參數,重定向的url以下:

http://www.myurl.com/example?code=CODE&openid=OPENID&openkey=OPENKEY

參數說明:

字段 說明
code 用來換取accesstoken的受權碼,有效期爲10分鐘
openid 用戶統一標識,能夠惟一標識一個用戶
openkey 與openid對應的用戶key,是驗證openid身份的驗證密鑰

第二步:請求accesstoken

請求地址:

https://open.t.qq.com/cgi-bin/oauth2/access_token?client_id=APP_KEY&client_secret=APP_SECRET&redirect_uri=http://www.myurl.com/example&grant_type=authorization_code&code=CODE

請求參數:

字段 必須 說明
client_id true 申請應用時分配的app_key
client_secret true 申請應用時分配的app_secret
grant_type true authorization_code
code true 調用authorize時返回的code
redirect_uri true 受權回調地址,必須和應用註冊的地址一致
state false 用於保持請求和回調的狀態,受權請求成功後原樣帶回給第三方。該參數用於防止csrf攻擊(跨站請求僞造攻擊),強烈建議第三方帶上該參數。參數設置建議爲簡單隨機數+session的方式

返回結果:

access_token=ACCESS_TOKEN&expires_in=60&refresh_token=REFRESH_TOKEN

參數說明:

字段 說明
access_token 訪問第三方資源的憑證
expires_in accesstoken過時時間,以返回的時間的準,單位爲秒,注意過時時提醒用戶從新受權
refresh_token 刷新token

2.Implicit grant

使用場景:
Implicit grant受權適用於沒有server端的客戶端應用,由客戶端發起受權請求,保存和處理accesstoken。

受權流程:
官方流程示意圖:

oauth2_6.gif

交互圖:

oauth2_implict.gif

請求地址:

https://open.t.qq.com/cgi-bin/oauth2/authorize?client_id=APP_KEY&response_type=token&redirect_uri=http://www.myurl.com/example

請求參數:

字段 必須 說明
client_id true 申請應用時分配的app_key
redirect_uri true 受權回調地址,必須和應用註冊的地址一致
response_type true 受權類型,爲token
wap false 主要用於指定手機受權頁的版本,無此參數默認顯示pc受權頁面

wap=1時,跳轉到wap1.0的受權頁
wap=2時,跳轉到wap2.0的受權頁
不帶本參數時,手機訪問默認跳到wap2.0的受權頁

state false 用於保持請求和回調的狀態,受權請求成功後原樣帶回給第三方。該參數用於防止csrf攻擊(跨站請求僞造攻擊),強烈建議第三方帶上該參數。參數設置建議爲簡單隨機數+session的方式
forcelogin false 針對pc受權頁
forcelogin=true,強制彈出登陸受權頁面 forcelogin=false,用戶已經登陸而且已經受權第三方應用,則再也不彈出受權頁面
默認爲forcelogin=true

返回結果:

http://www.myurl.com/example#access_token=ACCESS_TOKEN&expires_in=60&openid=OPENID&openkey=OPENKEY

參數說明:

字段 說明
access_token accesstoken,訪問api資源的憑證
expires_in accesstoken過時時間,以系統返回的過時時間爲準,注意過時時提醒用戶從新受權
openid 用戶統一標識,能夠惟一標識一個用戶
openkey 與openid對應的用戶key,是驗證openid身份的驗證密鑰

刷新accesstoken

Oauth2中,access_token的有效期不是無限的,當第三方應用使用的access_token時間超過了其生命週期時,能夠經過刷新機制來獲取新的access_token。

請求地址

https://open.t.qq.com/cgi-bin/oauth2/access_token?client_id=APP_KEY&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

請求參數

字段 必須 說明
client_id true 申請應用時分配的app_key
grant_type true 固定爲「refresh_token」
refresh_token true 上次受權或者刷新時獲取的refresh_token

返回結果

返回字符串:

access_token=ACCESS_TOKEN&expires_in=60&refresh_token=REFRESH_TOKEN&name=NAME

參數說明

字段 說明
access_token access_token,訪問api資源的憑證
expires_in access_token過時時間,以系統返回的過時時間爲準,注意過時時提醒用戶從新受權
refresh_token 刷新token
name 受權用戶微博賬號

注:
經過刷新機制能夠延長access_token有效期,每次刷新延長的access_token有效期與受權時access_token的有效期一致,屢次刷新可將access_token的有效期延長至一年。

訪問API資源

請求方法

GET/POST

請求參數(公共部分)

https://open.t.qq.com/api/REQUEST_METHOD?oauth_consumer_key=APP_KEY&access_token=ACCESSTOKEN&openid=OPENID&clientip=CLIENTIP&oauth_version=2.a&scope=all

其中REQUEST_METHOD爲須要請求的api接口,能夠參考api資源列表
請求的參數中,Oauth部分需包含:

字段 說明
oauth_consumer_key appkey
access_token 受權得到的accesstoken
openid 受權獲取的openid
clientip 客戶端的ip
oauth_version 版本號,必須爲2.a
scope 請求權限範圍(默認「all」)

其餘部分參數參考各api參數要求。

使用案例

  1. Authorization code受權案例
  2. Implicit受權案例

accesstoken過時時間

應用級別: accesstoken有效期
初級、高級及騰訊合做方應用,accesstoken有效期均爲三個月

錯誤碼說明

請參考錯誤碼說明

相關文章
相關標籤/搜索