使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺創(chuàng )建應用的詳細流程及應用)
優(yōu)采云 發(fā)布時(shí)間: 2021-10-04 08:34使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺創(chuàng )建應用的詳細流程及應用)
一、準備。
1. 微博賬號。注冊很容易。
2.微博賬號成為開(kāi)發(fā)者。
登錄微博開(kāi)放平臺登錄您的注冊賬號,然后進(jìn)入管理中心完成開(kāi)發(fā)者基本信息和身份認證。
這時(shí)候還需要瀏覽微博開(kāi)放平臺的文檔,了解這個(gè)開(kāi)放平臺的一些規范術(shù)語(yǔ)。
單擊每個(gè)鏈接進(jìn)行查看。順便看一下微博API文檔,里面有介紹,有些接口調用需要獲取access_token。這篇文章就是為了達到這個(gè)目的。
二、創(chuàng )建一個(gè)應用程序。
比如我們要開(kāi)發(fā)一個(gè)網(wǎng)站,然后在這個(gè)網(wǎng)站中連接微博開(kāi)放平臺,調用開(kāi)放平臺的接口。然后我們需要在登錄微博開(kāi)放平臺后創(chuàng )建一個(gè)應用。
創(chuàng )建應用程序后,您將獲得應用程序的 App key 和 AppSecret。然后我們就是利用這個(gè)信息調用新浪微博的auth2.0認證獲取access_token。
拿到access_token后,我們就可以調用我們需要的接口了,比如發(fā)微博等。
1. 創(chuàng )建引用的地方。開(kāi)放平臺--》點(diǎn)擊上方導航菜單中的“微鏈接”,這里的微鏈接的概念也是這個(gè)開(kāi)放平臺的一個(gè)術(shù)語(yǔ),具體含義可以查看相關(guān)文檔。
2.創(chuàng )建什么類(lèi)型的應用程序?
隨意看看你的情況。測試時(shí),您可以創(chuàng )建任何東西,嘗試并充滿(mǎn)信心地去做。我創(chuàng )建的是一個(gè)網(wǎng)頁(yè)參考,所以我發(fā)現它很容易輸入,不需要填寫(xiě)太多信息。
如下所示:
創(chuàng )建完成后,可以在我的應用中看到:
單擊以查看與應用程序相關(guān)的信息。一會(huì )兒我們需要用到這里的app key和app secret,還需要配置應用授權回調地址。
三、下載微博開(kāi)發(fā)SDK。
開(kāi)發(fā)SDK中有一些示例,可以直接作為參考。下載鏈接。我下載了 weibo4j 的 Java 版本。下載后,我導入了開(kāi)發(fā)工具。如下所示:
代碼很多,不要慌,先在examples包下的oauth2包下找到OAuth4Code類(lèi)。我們需要運行這個(gè)類(lèi)。
這個(gè)類(lèi)完成oauth操作,這一步包括兩個(gè)請求
第一次:
https://api.weibo.com/oauth2/authorize?client_id=1234567890&redirect_uri=https://api.weibo.com/oauth2/default.html&response_type=code
第二次:
https://api.weibo.com/oauth2/access_token
請注意,第一個(gè)請求中有一個(gè) client_id。這個(gè)參數需要在config.properties中配置,對應我們上面創(chuàng )建的應用的app key。
同樣,這個(gè)配置文件中有一個(gè)client_SERCRET,對應我們上面創(chuàng )建的應用的app sercret,復制進(jìn)去。
還有一個(gè)參數redirect_uri,比較關(guān)鍵。當我們運行OAuth4Code類(lèi)時(shí),第一次請求完成后,會(huì )回調這個(gè)地址,同時(shí)帶入一個(gè)code參數。
我們需要復制這個(gè)參數,在控制臺中輸入,然后回車(chē)。發(fā)起第二個(gè)請求,這個(gè)請求會(huì )返回我們需要的access_token。那么問(wèn)題來(lái)了,如何配置這個(gè)地址呢?
1. 在上面創(chuàng )建的參考中,找到接口管理--》授權機制也沒(méi)有配置回調地址的地方,填寫(xiě)即可。
2. 上面的鏈接應該在config.properties中配置,如下:
client_ID = 1234567890
client_SERCRET = 890a2ab550cf8d7a0090ff2f19850f3a
redirect_URI = https\://api.weibo.com/oauth2/default.html
baseURL=https://api.weibo.com/2/
accessTokenURL=https://api.weibo.com/oauth2/access_token
authorizeURL=https://api.weibo.com/oauth2/authorize
rmURL=https\://rm.api.weibo.com/2/
三、 運行程序獲取access_token。
上面第二步完成后,配置就完成了。運行以下類(lèi):
public class OAuth4Code {
public static void main(String [] args) throws WeiboException, IOException{
Oauth oauth = new Oauth();
BareBonesBrowserLaunch.openURL(oauth.authorize("code"));
System.out.println(oauth.authorize("code"));
System.out.print("Hit enter when it's done.[Enter]:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String code = br.readLine();
Log.logInfo("code: " + code);
try{
System.out.println(oauth.getAccessTokenByCode(code));
} catch (WeiboException e) {
if(401 == e.getStatusCode()){
Log.logInfo("Unable to get the access token.");
}else{
e.printStackTrace();
}
}
}
}
程序運行后,在控制臺輸入一行log后,進(jìn)入等待控制臺輸入的狀態(tài),瀏覽器立即打開(kāi)了一個(gè)頁(yè)面,跳轉后頁(yè)面變成了如下:
復制瀏覽器地址欄中的code參數值?;氐絤yeclipse,粘貼這個(gè)值,然后回車(chē)。程序繼續執行,使用這個(gè)code參數,再次發(fā)起請求,終于成功后就可以拿到access_token了
整個(gè)過(guò)程的效果日志:
四、本例中oauth授權流程總結。
兩次請求
第一次:
https://api.weibo.com/oauth2/authorize?client_id=123050457758183&redirect_uri=http://www.example.com/response&response_type=code
同意授權后,會(huì )重定向:
//同意授權后會(huì )重定向
http://www.example.com/response&code=CODE
第二次:
按照上面的代碼再次發(fā)起請求。獲取 access_token
會(huì )有一些問(wèn)題,主要原因是授權地址配置不正確。根據本文中的示例配置,您可以成功運行程序。獲取 access_token。
錯誤代碼如下:
錯誤代碼(error) 錯誤代碼(error_code) 錯誤描述(error_description)
redirect_uri_mismatch
21322
重定向地址不匹配
無(wú)效請求
21323
請求是非法的
invalid_client
21324
client_id 或 client_secret 參數無(wú)效
invalid_grant
21325
提供的訪(fǎng)問(wèn)授權無(wú)效、已過(guò)期或已撤銷(xiāo)
未經(jīng)授權的客戶(hù)端
21326
客戶(hù)端沒(méi)有權限
expired_token
21327
令牌過(guò)期
unsupported_grant_type
21328
不支持的 GrantType
unsupported_response_type
21329
不支持的響應類(lèi)型
拒絕訪(fǎng)問(wèn)
21330
用戶(hù)或授權服務(wù)器拒絕授予數據訪(fǎng)問(wèn)權限
暫時(shí)不可用
21331
該服務(wù)暫時(shí)不可用
a*敏*感*詞*ey權限被拒絕
21337
應用權限不足







