騰訊微博開放平臺,是基於騰訊微博系統,爲廣大開發者和用戶提供的開放數據分享與傳播平臺。 php
廣大開發者和用戶登陸平臺後,就可使用平臺提供的開放API接口,建立應用從微博系統獲取信息,或將新的信息傳播到整個微博系統中,豐富多樣的API接口和應用,加上您的智慧,將創造出無窮的應用和樂趣。 api
在使用騰訊微博平臺提供的API前,您須要作如下兩步工做: 瀏覽器
Accesstoken是第三方得到用戶受權的憑證,是第三方訪問api資源的票據。目前,騰訊微博採用Oauth2.0協議對第三方進行受權,相對Oauth1.0來講,Oauth2.0具備更加簡單和安全特色。 安全
關於Oauth2.0的詳細介紹,請參考Oauth2.0協議標準。
若是您須要使用Oauth1.0受權,請參考騰訊微博Oauth1.0受權協議。 服務器
用戶經過Oauth2.0受權第三方有兩種方式: session
Authorization cod模式和Implicit模式僅在受權的時候有所區別,後續調用API的方式是一致的。 app
使用場景:
Authorization code受權適用於PC,無線客戶端等須要和第三方server進行交互的應用場景。使用Authorization code受權,第三方可以集中處理用戶的受權請求和受權結果,適用於有server端的應用。 url
受權流程:
Authorization code受權模式分爲兩步,首先獲取code,而後用code換取accesstoken。官方流程示意圖: spa
交互圖:
請求方法:
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的受權頁 |
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身份的驗證密鑰 |
請求地址:
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 |
使用場景:
Implicit grant受權適用於沒有server端的客戶端應用,由客戶端發起受權請求,保存和處理accesstoken。
受權流程:
官方流程示意圖:
交互圖:
請求地址:
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的受權頁 |
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身份的驗證密鑰 |
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的有效期延長至一年。
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參數要求。
應用級別: accesstoken有效期
初級、高級及騰訊合做方應用,accesstoken有效期均爲三個月
請參考錯誤碼說明