使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(聯(lián)合第三方平臺登錄接入,初次接觸開(kāi)放平臺和AppSecret5 )
優(yōu)采云 發(fā)布時(shí)間: 2022-01-11 07:00使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(聯(lián)合第三方平臺登錄接入,初次接觸開(kāi)放平臺和AppSecret5
)
最近做了一個(gè)關(guān)于聯(lián)合第三方平臺的登錄訪(fǎng)問(wèn),第一次接觸到開(kāi)放平臺,在這里做個(gè)筆記。
開(kāi)發(fā)前的準備工作如下:
1、注冊新浪微博
2、訪(fǎng)問(wèn)新浪微博開(kāi)發(fā)平臺。如果是企業(yè),申請企業(yè)準入并提交相關(guān)材料進(jìn)行審核;如果是個(gè)人開(kāi)發(fā)者,請申請個(gè)人開(kāi)發(fā)者申請。我們以開(kāi)發(fā)者為例
3、使用新浪微博開(kāi)放API,需要向新浪申請一個(gè)a*敏*感*詞*ey和一個(gè)App Secret。這些是入口。您必須先獲得這兩個(gè),然后才能進(jìn)行下一個(gè)訪(fǎng)問(wèn)工作。
4、輸入完善個(gè)人信息后,必須完成身份驗證審核。審核完成后,新浪開(kāi)放平臺會(huì )給出a*敏*感*詞*ey和App Secret。
5、接下來(lái)就是如何使用a*敏*感*詞*ey和App Secret了。您需要在開(kāi)放平臺下載文檔或演示代碼。其實(shí)提供的文檔基本上都是技術(shù)文檔,很多東西都沒(méi)有解釋清楚。還是會(huì )有很多麻煩
6、新浪開(kāi)放平臺提供了很多不同開(kāi)發(fā)語(yǔ)言的SDK,這里我選擇java SDK,下載一個(gè)zip文件(包括新接口和OAuth2.0),解壓后即可可以直接導入go到eclipse,結構如下,包括weibo4j源碼和示例代碼
這里是一個(gè)config配置文件,打開(kāi)如下:
我們之前申請的a*敏*感*詞*ey和App Secret就派上用場(chǎng)了。這里的client_ID為a*敏*感*詞*ey,client_SERCRET為App Secret,填寫(xiě)對應內容,redirect_URI為回調地址。
點(diǎn)擊“第三方”-》跳轉微博登錄-》登錄ok,授權-》回調自己的應用,這里是回調地址的意思。
7、開(kāi)始運行測試程序,測試程序在example下,包weibo4j.examples.oauth2下的類(lèi)OAuth4Code,這里我們需要做一些修改,修改程序在
oauth.authorize("code",args[0],args[1]),把這一段改成oauth.authorize("code","","all"),至于為什么改這個(gè),請看界面此處的文檔 oauth.authorize 使用說(shuō)明
假設我們這里沒(méi)有回調地址,配置文件中的redirect_URI為空。運行后會(huì )自動(dòng)打開(kāi)瀏覽器運行測試,顯示如下:
此時(shí)的URL地址為:
這說(shuō)明我的a*敏*感*詞*ey和App Secret是有效的,因為我們還沒(méi)有創(chuàng )建正式的應用,新浪無(wú)法識別我的來(lái)源
8、在開(kāi)放平臺上創(chuàng )建應用,如下圖
這里有三種類(lèi)型的應用程序,網(wǎng)站 訪(fǎng)問(wèn)、站內應用程序和移動(dòng)應用程序。如果是企業(yè)行為,有公有域名可以訪(fǎng)問(wèn),應用通過(guò)域名訪(fǎng)問(wèn)。這里可以用任何方法,但是如果我們只是一個(gè)簡(jiǎn)單的開(kāi)發(fā)者,沒(méi)有公網(wǎng)域名,比如內網(wǎng)模式,ip以?xún)染W(wǎng)地址192.168.開(kāi)頭1.*,本地127.0.0.1等,這里只能選擇創(chuàng )建站內應用,填寫(xiě)如下
這里紅框標注的地方就是回調地址。如果我沒(méi)有公網(wǎng)ip和域名的話(huà),我在局域網(wǎng)玩的時(shí)候隨便填,但是不能用localhost代替127.0.0.1,這里是按照配置要求做的,這個(gè)配置的要求很?chē)栏瘢?/p>
尤其是下面的應用圖標比較麻煩。完成后,您可以提交它們以供審核。
9、提交審核后,新浪開(kāi)放平臺會(huì )在1天左右第一時(shí)間向您的郵箱發(fā)送郵件通知您審核結果,但無(wú)論審核結果是否失敗,關(guān)鍵是提交審核。沒(méi)有審核成功,這里可以照常使用
10、完成測試項目中的配置文件redirect_URI,必須與創(chuàng )建應用時(shí)填寫(xiě)的【應用實(shí)際地址】一致,這是回調地址!完成配置后,再次運行OAuth4Code.java,如圖
在這里你會(huì )跳轉到新浪微博的登錄頁(yè)面。登錄新浪微博賬號后,需要點(diǎn)擊授權,表示平臺可以訪(fǎng)問(wèn)您的微博賬號相關(guān)內容分享您的信息等。授權結束后,
將返回一個(gè)代碼。這段代碼非常重要。它是我們整個(gè)訪(fǎng)問(wèn)第三方平臺的門(mén)鑰匙。通過(guò)這段代碼,我們可以獲取到用戶(hù)的access_token、UID等內容,相當于整個(gè)訪(fǎng)問(wèn)過(guò)程。
11、調用新浪微博開(kāi)放API
這里我們需要研究這些API來(lái)滿(mǎn)足訪(fǎng)問(wèn)的需要。首先要熟悉的是OAuth2.0授權接口,網(wǎng)上可以查到,如下:
12、通過(guò)servlet程序調用開(kāi)放API獲取新浪微博的UID和微博名的示例
response.setContentType("text/html;charset=UTF-8");
String accessToken = null ;
String uid = null ;
String screenName = null ;
String username = null ;
AccessToken accessTokenObj = null ;
Oauth oauth2 = new Oauth();
try {
out = response.getWriter();
accessTokenObj = oauth2.getAccessTokenByCode(code) ;
logger.info(accessTokenObj);
accessToken = accessTokenObj.getAccessToken() ;
oauth2.setToken(accessToken) ;
Account account = new Account() ;
account.client.setToken(accessToken) ;
JSONObject uidJson = account.getUid() ;
uid = uidJson.getString("uid") ;
Users users = new Users() ;
users.client.setToken(accessToken) ;
User weiboUser = users.showUserById(uid) ;
username = weiboUser.getName() ;
screenName = weiboUser.getScreenName() ;
} catch (WeiboException | IOException | JSONException e) {
e.printStackTrace();
}
out.println("微博訪(fǎng)問(wèn)Token_Info:" + accessTokenObj + "\t");
out.println("微博訪(fǎng)問(wèn)Token:" + accessToken + "\t");
out.println("微博用戶(hù)-Uid:" + uid + "\t");
out.println("微博用戶(hù)-名稱(chēng):" + screenName + "\t");
out.flush();
out.close();*/