
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(國外的微博程序,你知道幾個(gè)?(上))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 404 次瀏覽 ? 2022-02-18 07:17
雖然國外微博程序功能齊全,但StateusNet等可能并不適合國內特殊環(huán)境。在這種情況下,我們來(lái)數一數國內的微博產(chǎn)品。更多詳情請關(guān)注相關(guān)報道。
微博
微博v2.0官方版下載
界面預覽
新浪微博基于新浪開(kāi)放的API,通過(guò)綁定新浪微博賬號可以實(shí)現與新浪微博的無(wú)縫對接。微博完全免費開(kāi)源,如果不能完全滿(mǎn)足客戶(hù)的需求,客戶(hù)可以自由修改。微博支持與原站賬號系統對接。1. 版本 1 內置了 Discuz! 的帳戶(hù)適配器,可以連接 Discuz! 和微博賬戶(hù),只需少量操作。微博支持換膚機制。除了默認提供的六套皮膚外,還可以自行開(kāi)發(fā)自定義皮膚。
微博
iWeibo v1.0 下載
界面預覽
騰訊iWeibo系統是基于騰訊微博開(kāi)放平臺API開(kāi)發(fā)的免費微博系統。微博功能齊全,可輕松接入騰訊微博。
頁(yè)面烹飪
PageCookery微博系統v0.9.8下載
界面預覽
PageCookery 是國內第一個(gè)公開(kāi)發(fā)布的單用戶(hù)版本的開(kāi)源微博程序?;赑HP+MySQL架構,以“分享”和“發(fā)現”為理念的安全、高效、穩定的Web2.0微博解決方案。
便條狗
注意狗v3.6.6.20120829升級包UTF-8下載
界面預覽
Notedog微博系統是一套行業(yè)領(lǐng)先的開(kāi)源PHP微博程序。支持網(wǎng)頁(yè)、手機、QQ機器人、異地分享等多種方式發(fā)布內容。同步到新浪微博(可以使用新浪微博賬號登錄、注冊、綁定)等傳播內容是目前最流行、最受歡迎的互動(dòng)系統。
易談
EasyTalk v5.0.1 build 20100801下載
界面預覽
EasyTalk是國內首個(gè)PHP+Mysql多用戶(hù)開(kāi)源微博系統,支持網(wǎng)頁(yè)、手機等多種方式發(fā)布和接收信息。EasyTalk 完全符合中國人的上網(wǎng)習慣。安裝部署簡(jiǎn)單,管理方便。EasyTalk功能強大,二次開(kāi)發(fā)率高,人性化的模板定制功能大大提升了用戶(hù)體驗。因此,EasyTalk相對于國內其他微博軟件具有絕對優(yōu)勢! 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(國外的微博程序,你知道幾個(gè)?(上))
雖然國外微博程序功能齊全,但StateusNet等可能并不適合國內特殊環(huán)境。在這種情況下,我們來(lái)數一數國內的微博產(chǎn)品。更多詳情請關(guān)注相關(guān)報道。
微博
微博v2.0官方版下載


界面預覽
新浪微博基于新浪開(kāi)放的API,通過(guò)綁定新浪微博賬號可以實(shí)現與新浪微博的無(wú)縫對接。微博完全免費開(kāi)源,如果不能完全滿(mǎn)足客戶(hù)的需求,客戶(hù)可以自由修改。微博支持與原站賬號系統對接。1. 版本 1 內置了 Discuz! 的帳戶(hù)適配器,可以連接 Discuz! 和微博賬戶(hù),只需少量操作。微博支持換膚機制。除了默認提供的六套皮膚外,還可以自行開(kāi)發(fā)自定義皮膚。
微博
iWeibo v1.0 下載


界面預覽
騰訊iWeibo系統是基于騰訊微博開(kāi)放平臺API開(kāi)發(fā)的免費微博系統。微博功能齊全,可輕松接入騰訊微博。
頁(yè)面烹飪
PageCookery微博系統v0.9.8下載


界面預覽
PageCookery 是國內第一個(gè)公開(kāi)發(fā)布的單用戶(hù)版本的開(kāi)源微博程序?;赑HP+MySQL架構,以“分享”和“發(fā)現”為理念的安全、高效、穩定的Web2.0微博解決方案。
便條狗
注意狗v3.6.6.20120829升級包UTF-8下載


界面預覽
Notedog微博系統是一套行業(yè)領(lǐng)先的開(kāi)源PHP微博程序。支持網(wǎng)頁(yè)、手機、QQ機器人、異地分享等多種方式發(fā)布內容。同步到新浪微博(可以使用新浪微博賬號登錄、注冊、綁定)等傳播內容是目前最流行、最受歡迎的互動(dòng)系統。
易談
EasyTalk v5.0.1 build 20100801下載


界面預覽
EasyTalk是國內首個(gè)PHP+Mysql多用戶(hù)開(kāi)源微博系統,支持網(wǎng)頁(yè)、手機等多種方式發(fā)布和接收信息。EasyTalk 完全符合中國人的上網(wǎng)習慣。安裝部署簡(jiǎn)單,管理方便。EasyTalk功能強大,二次開(kāi)發(fā)率高,人性化的模板定制功能大大提升了用戶(hù)體驗。因此,EasyTalk相對于國內其他微博軟件具有絕對優(yōu)勢!
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站-webgis-native)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 55 次瀏覽 ? 2022-02-17 19:04
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站-webgis-native/
你好!專(zhuān)注服務(wù)于企業(yè)級大數據分析、數據可視化等需求,相關(guān)產(chǎn)品線(xiàn)包括行業(yè)分析bi系統、行業(yè)分析報告bi系統、bi平臺、數據源及數據處理模塊,平臺已經(jīng)成功服務(wù)于多家企業(yè)、政府部門(mén)。
我們之前用了行業(yè)分析的bi系統,特別方便快捷,不管是跟行業(yè)數據分析相關(guān)的各種儀表盤(pán)、報表、分析報告,bi系統都是實(shí)時(shí)同步的,不用維護,不同部門(mén)的進(jìn)行交流,互通有無(wú)也很方便。
這個(gè),你可以先看看新浪微博開(kāi)放平臺有什么合作平臺之類(lèi)的,是專(zhuān)注于微博開(kāi)放平臺開(kāi)發(fā),算是業(yè)內比較專(zhuān)業(yè)的了,可以去了解下。
看過(guò)一篇文章(來(lái)自愛(ài)分析),
我認為是這樣1.提供技術(shù)支持2.提供運營(yíng)支持3.提供專(zhuān)業(yè)的咨詢(xún)。
微博數據上報平臺和微博數據采集平臺了解一下,為多方需求提供“天貓超市的毛利分析和進(jìn)銷(xiāo)存管理”服務(wù),是騰訊、阿里、大麥科技合作成立的一個(gè)專(zhuān)業(yè)團隊提供服務(wù)的。詳情請見(jiàn)新浪微博開(kāi)放平臺。
找
國內的可以了解下apilink, 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站-webgis-native)
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站-webgis-native/
你好!專(zhuān)注服務(wù)于企業(yè)級大數據分析、數據可視化等需求,相關(guān)產(chǎn)品線(xiàn)包括行業(yè)分析bi系統、行業(yè)分析報告bi系統、bi平臺、數據源及數據處理模塊,平臺已經(jīng)成功服務(wù)于多家企業(yè)、政府部門(mén)。
我們之前用了行業(yè)分析的bi系統,特別方便快捷,不管是跟行業(yè)數據分析相關(guān)的各種儀表盤(pán)、報表、分析報告,bi系統都是實(shí)時(shí)同步的,不用維護,不同部門(mén)的進(jìn)行交流,互通有無(wú)也很方便。
這個(gè),你可以先看看新浪微博開(kāi)放平臺有什么合作平臺之類(lèi)的,是專(zhuān)注于微博開(kāi)放平臺開(kāi)發(fā),算是業(yè)內比較專(zhuān)業(yè)的了,可以去了解下。
看過(guò)一篇文章(來(lái)自愛(ài)分析),
我認為是這樣1.提供技術(shù)支持2.提供運營(yíng)支持3.提供專(zhuān)業(yè)的咨詢(xún)。
微博數據上報平臺和微博數據采集平臺了解一下,為多方需求提供“天貓超市的毛利分析和進(jìn)銷(xiāo)存管理”服務(wù),是騰訊、阿里、大麥科技合作成立的一個(gè)專(zhuān)業(yè)團隊提供服務(wù)的。詳情請見(jiàn)新浪微博開(kāi)放平臺。
找
國內的可以了解下apilink,
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(E9%A6%E9A1%(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 71 次瀏覽 ? 2022-02-17 00:06
關(guān)于新浪微博開(kāi)放平臺的問(wèn)題很多。網(wǎng)上的文檔不是很清楚。授權機制被難住了。我不知道發(fā)生了什么事。
不小心嘗試了一個(gè)方法States返回成功,代碼如下:
1.頭部引用
2.Javascript
$(function(){
WB2.anyWhere(function(W){
W.parseCMD("/statuses/home_timeline.json?user_id=2922998432", function(sResult, bStatus){
if(bStatus == true) {
alert(sResult);
}
},{},{
method: ‘get‘
});
});
})
這里的User_id填寫(xiě)自己的Userid。不知道的可以去自己的微博查一下,或者去百度一下怎么查自己的userid。我不會(huì )在這里詳細解釋。
如果成功,會(huì )彈出object類(lèi)型的sResult,你可以根據需要調試它并獲取內容;parseCMD的第一個(gè)參數是接口,接口的詳細信息可以去新浪微博開(kāi)放平臺的API查看你需要的%E9%A6。%96%E9%A1%B5
-----新浪微博好像所有界面都不支持POST,但是默認提交還是POST方式:需要'GET',
新浪微博開(kāi)放平臺API、布扣、
新浪微博開(kāi)放平臺API
原來(lái)的: 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(E9%A6%E9A1%(圖))
關(guān)于新浪微博開(kāi)放平臺的問(wèn)題很多。網(wǎng)上的文檔不是很清楚。授權機制被難住了。我不知道發(fā)生了什么事。
不小心嘗試了一個(gè)方法States返回成功,代碼如下:
1.頭部引用
2.Javascript
$(function(){
WB2.anyWhere(function(W){
W.parseCMD("/statuses/home_timeline.json?user_id=2922998432", function(sResult, bStatus){
if(bStatus == true) {
alert(sResult);
}
},{},{
method: ‘get‘
});
});
})
這里的User_id填寫(xiě)自己的Userid。不知道的可以去自己的微博查一下,或者去百度一下怎么查自己的userid。我不會(huì )在這里詳細解釋。
如果成功,會(huì )彈出object類(lèi)型的sResult,你可以根據需要調試它并獲取內容;parseCMD的第一個(gè)參數是接口,接口的詳細信息可以去新浪微博開(kāi)放平臺的API查看你需要的%E9%A6。%96%E9%A1%B5
-----新浪微博好像所有界面都不支持POST,但是默認提交還是POST方式:需要'GET',
新浪微博開(kāi)放平臺API、布扣、
新浪微博開(kāi)放平臺API
原來(lái)的:
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 67 次瀏覽 ? 2022-02-12 21:10
介紹
最近不太忙,花點(diǎn)時(shí)間學(xué)習android app開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子,可以從基本控件和基本動(dòng)畫(huà)效果的demo合集中放出,不斷更新下載。
從這周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的安卓客戶(hù)端,盡可能的完善功能。
今天的內容
上圖是這個(gè)客戶(hù)端的主界面。目前只獲取前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
操作系統是android2.2.
用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)Message、Handler、認證相關(guān)OAuth、異步加載用戶(hù)圖片等。
新浪微博的驗證使用signpost的OAuth組件,不使用微博的SDK。
源代碼下載:新浪微博2
源碼下載后,改后綴為rar,使用壓縮軟件解壓。
關(guān)于 OAuth 身份驗證
OAuth是目前比較流行的一種授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式,國內新浪微博、騰訊微博、163微博等開(kāi)放平臺也已支持。這種驗證模式。
來(lái)自維基百科的引文
“oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用程序訪(fǎng)問(wèn)用戶(hù)放置在 網(wǎng)站 上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用程序。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)他們存儲在特定服務(wù)提供商處的數據?!?br /> 例如:
用戶(hù)A在服務(wù)提供者B上存儲了一些資源。B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。使用用戶(hù)名和密碼登錄B可以查看自己的資源。假設有一個(gè)應用程序C,當用戶(hù)A使用C時(shí),他需要自己存儲在B上的資源。有兩種方法可以在 C 上實(shí)現資源以在 B 上顯示自身。
這時(shí)C就可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想在B上展示資源時(shí),C會(huì )跳轉到B的驗證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣,您就不必擔心用戶(hù)名和密碼,也不必同時(shí)存儲多個(gè)資源。
您可以通過(guò)以下網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。
從上圖中我們可以看出,整個(gè)流程分為消費者和提供者兩部分。消費者是示例中的 C 應用程序,提供者是示例中的 B 服務(wù)提供者。
使用 OAuth 進(jìn)行認證和授權的流程如下:
用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作存儲在服務(wù)提供者中的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。服務(wù)提供者對客戶(hù)端進(jìn)行身份驗證后,將授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)token后,將用戶(hù)引導至服務(wù)提供者的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供商的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)商引導用戶(hù)返回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)授權授予客戶(hù)端訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲得的訪(fǎng)問(wèn)令牌來(lái)訪(fǎng)問(wèn)托管在服務(wù)提供商上的受保護資源。新浪微博的誓言
借用一張新浪微博oauth驗證流程圖。
當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們會(huì )根據callback_url跳轉到我們應用的某個(gè)地址。我們再次使用request_token來(lái)獲取access_token,然后我們需要通過(guò)access token來(lái)訪(fǎng)問(wèn)需要驗證的開(kāi)放平臺提供的接口。
當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,可以直接使用key進(jìn)行訪(fǎng)問(wèn)。具體請參考開(kāi)放平臺提供的API文檔。
騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上也類(lèi)似。
package com.sinaweibo2;
import oauth.signpost.OAuthConsumer;
import oauth.signpost.OAuthProvider;
import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;
import oauth.signpost.commonshttp.CommonsHttpOAuthProvider;
import oauth.signpost.exception.OAuthCommunicationException;
import oauth.signpost.exception.OAuthExpectationFailedException;
import oauth.signpost.exception.OAuthMessageSignerException;
import oauth.signpost.exception.OAuthNotAuthorizedException;
public class OAuth {
private OAuthConsumer mConsumer;
private OAuthProvider mProvider;
public static final String CALLBACK_URL = "sinaweibo2://WeiboListActivity";
public static final String CONSUMER_KEY = "1849239616";
public static final String CONSUMER_SECRET = "b2137bf782bf6cae004b8a8394d5d5d6";
public static final String REQUEST_TOKEN_URL = "http://api.t.sina.com.cn/oauth ... 3B%3B
public static final String ACCESS_TOKEN_URL = "http://api.t.sina.com.cn/oauth/access_token";
public static final String AUTHORIZE_URL = "http://api.t.sina.com.cn/oauth/authorize";
public OAuth() {
}
public String RetrieveAuthUrl() throws OAuthMessageSignerException,
OAuthNotAuthorizedException, OAuthExpectationFailedException,
OAuthCommunicationException {
mConsumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider = new CommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
return authUrl;
}
public void RetrieveAccessToken(String verifier)
throws OAuthMessageSignerException, OAuthNotAuthorizedException,
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, verifier);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下來(lái)主要完善兩個(gè)功能,一是分頁(yè)瀏覽,二是發(fā)布微博。
未來(lái)可能支持圖片發(fā)布等實(shí)用功能。
有UI美化,性能優(yōu)化。
總結
在學(xué)習的過(guò)程中,看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不錯的入門(mén)書(shū),書(shū)我沒(méi)有看完,但是看了大部分,邊看邊寫(xiě)demo。
同時(shí),論壇是eoe天天的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,總之就是鍛煉自己,強迫自己鍛煉基礎和思考。
論壇上有很多中文的pdf教程,但是我發(fā)現大部分都是android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容的翻譯。所以我覺(jué)得,如果英文不是很差,建議直接看上面兩節,同時(shí)練習里面的例子。保證在兩周內,你會(huì )取得很大的進(jìn)步。
參考
Technorati 標簽:android, 開(kāi)放平臺, oauth, 新浪微博 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
介紹
最近不太忙,花點(diǎn)時(shí)間學(xué)習android app開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子,可以從基本控件和基本動(dòng)畫(huà)效果的demo合集中放出,不斷更新下載。
從這周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的安卓客戶(hù)端,盡可能的完善功能。
今天的內容

上圖是這個(gè)客戶(hù)端的主界面。目前只獲取前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
操作系統是android2.2.
用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)Message、Handler、認證相關(guān)OAuth、異步加載用戶(hù)圖片等。
新浪微博的驗證使用signpost的OAuth組件,不使用微博的SDK。

源代碼下載:新浪微博2
源碼下載后,改后綴為rar,使用壓縮軟件解壓。
關(guān)于 OAuth 身份驗證
OAuth是目前比較流行的一種授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式,國內新浪微博、騰訊微博、163微博等開(kāi)放平臺也已支持。這種驗證模式。
來(lái)自維基百科的引文
“oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用程序訪(fǎng)問(wèn)用戶(hù)放置在 網(wǎng)站 上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用程序。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)他們存儲在特定服務(wù)提供商處的數據?!?br /> 例如:
用戶(hù)A在服務(wù)提供者B上存儲了一些資源。B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。使用用戶(hù)名和密碼登錄B可以查看自己的資源。假設有一個(gè)應用程序C,當用戶(hù)A使用C時(shí),他需要自己存儲在B上的資源。有兩種方法可以在 C 上實(shí)現資源以在 B 上顯示自身。
這時(shí)C就可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想在B上展示資源時(shí),C會(huì )跳轉到B的驗證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣,您就不必擔心用戶(hù)名和密碼,也不必同時(shí)存儲多個(gè)資源。
您可以通過(guò)以下網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。

從上圖中我們可以看出,整個(gè)流程分為消費者和提供者兩部分。消費者是示例中的 C 應用程序,提供者是示例中的 B 服務(wù)提供者。
使用 OAuth 進(jìn)行認證和授權的流程如下:
用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作存儲在服務(wù)提供者中的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。服務(wù)提供者對客戶(hù)端進(jìn)行身份驗證后,將授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)token后,將用戶(hù)引導至服務(wù)提供者的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供商的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)商引導用戶(hù)返回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)授權授予客戶(hù)端訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲得的訪(fǎng)問(wèn)令牌來(lái)訪(fǎng)問(wèn)托管在服務(wù)提供商上的受保護資源。新浪微博的誓言

借用一張新浪微博oauth驗證流程圖。
當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們會(huì )根據callback_url跳轉到我們應用的某個(gè)地址。我們再次使用request_token來(lái)獲取access_token,然后我們需要通過(guò)access token來(lái)訪(fǎng)問(wèn)需要驗證的開(kāi)放平臺提供的接口。
當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,可以直接使用key進(jìn)行訪(fǎng)問(wèn)。具體請參考開(kāi)放平臺提供的API文檔。
騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上也類(lèi)似。
package com.sinaweibo2;
import oauth.signpost.OAuthConsumer;
import oauth.signpost.OAuthProvider;
import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;
import oauth.signpost.commonshttp.CommonsHttpOAuthProvider;
import oauth.signpost.exception.OAuthCommunicationException;
import oauth.signpost.exception.OAuthExpectationFailedException;
import oauth.signpost.exception.OAuthMessageSignerException;
import oauth.signpost.exception.OAuthNotAuthorizedException;
public class OAuth {
private OAuthConsumer mConsumer;
private OAuthProvider mProvider;
public static final String CALLBACK_URL = "sinaweibo2://WeiboListActivity";
public static final String CONSUMER_KEY = "1849239616";
public static final String CONSUMER_SECRET = "b2137bf782bf6cae004b8a8394d5d5d6";
public static final String REQUEST_TOKEN_URL = "http://api.t.sina.com.cn/oauth ... 3B%3B
public static final String ACCESS_TOKEN_URL = "http://api.t.sina.com.cn/oauth/access_token";
public static final String AUTHORIZE_URL = "http://api.t.sina.com.cn/oauth/authorize";
public OAuth() {
}
public String RetrieveAuthUrl() throws OAuthMessageSignerException,
OAuthNotAuthorizedException, OAuthExpectationFailedException,
OAuthCommunicationException {
mConsumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider = new CommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
return authUrl;
}
public void RetrieveAccessToken(String verifier)
throws OAuthMessageSignerException, OAuthNotAuthorizedException,
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, verifier);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下來(lái)主要完善兩個(gè)功能,一是分頁(yè)瀏覽,二是發(fā)布微博。
未來(lái)可能支持圖片發(fā)布等實(shí)用功能。
有UI美化,性能優(yōu)化。
總結
在學(xué)習的過(guò)程中,看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不錯的入門(mén)書(shū),書(shū)我沒(méi)有看完,但是看了大部分,邊看邊寫(xiě)demo。
同時(shí),論壇是eoe天天的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,總之就是鍛煉自己,強迫自己鍛煉基礎和思考。
論壇上有很多中文的pdf教程,但是我發(fā)現大部分都是android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容的翻譯。所以我覺(jué)得,如果英文不是很差,建議直接看上面兩節,同時(shí)練習里面的例子。保證在兩周內,你會(huì )取得很大的進(jìn)步。
參考
Technorati 標簽:android, 開(kāi)放平臺, oauth, 新浪微博
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺授權回調頁(yè)的代碼)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 62 次瀏覽 ? 2022-02-12 18:19
第 1 步:添加應用程序
進(jìn)入新浪微博開(kāi)放平臺(如果沒(méi)有,自行注冊),進(jìn)入“管理中心”,點(diǎn)擊“創(chuàng )建應用”,選擇“微鏈接應用”,然后點(diǎn)擊“創(chuàng )建應用”,選擇“手機申請”,并填寫(xiě)相應信息,如果沒(méi)有申請地址,選擇平臺提交即可。請記住保存您的 App Key 和 App Secret 以備后用。
第二步:Oauth2.0 授權設置
應用創(chuàng )建后,可以在“管理中心”-“我的應用”查看信息,“應用信息”-“高級信息”可以設置網(wǎng)站@的授權回調頁(yè)面和取消授權回調頁(yè)面>。用戶(hù)授權成功后會(huì )回調授權回調頁(yè)面,同時(shí)會(huì )返回一個(gè)“code”參數,開(kāi)發(fā)者可以用code換取Access_Token值。當然,如果是手機應用,比如本文沒(méi)有自己的授權回調頁(yè)面,建議填寫(xiě):或者類(lèi)似的。如果授權后返回的表單如下:
我們只需要得到代碼a6146547f981199c07348837b0629d5d的值。請注意,代碼的值每次都不同。
第三步:在你要點(diǎn)擊登錄的地方調整如下代碼(注意這里的redirectURI寫(xiě)你自己的回調頁(yè)面)
WBAuthorizeRequest *request = [WBAuthorizeRequest request];
request.redirectURI = @"你的授權回調頁(yè)網(wǎng)址";
request.scope = @"all";
[WeiboSDK sendRequest:request];
第四步:在appdelegate中引入頭文件,跟隨代理WeiboSDKDelegate
#import "WeiboSDK.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[WeiboSDK enableDebugMode:YES];
[WeiboSDK registerApp:kAppKey];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [WeiboSDK handleOpenURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [WeiboSDK handleOpenURL:url delegate:self];
}
/**
收到一個(gè)來(lái)自微博客戶(hù)端程序的請求
收到微博的請求后,第三方應用應該按照請求類(lèi)型進(jìn)行處理,處理完后必須通過(guò) [WeiboSDK sendResponse:] 將結果回傳給微博
@param request 具體的請求對象
*/
- (void)didReceiveWeiboRequest:(WBBaseRequest *)request {
WBProvideMessageForWeiboResponse *response = [WBProvideMessageForWeiboResponse responseWithMessage:[self messageToShare]];
[WeiboSDK sendResponse:response];
NSLog(@"收到一個(gè)來(lái)自微博客戶(hù)端程序的請求");
}
/**
收到一個(gè)來(lái)自微博客戶(hù)端程序的響應
收到微博的響應后,第三方應用可以通過(guò)響應類(lèi)型、響應的數據和 WBBaseResponse.userInfo 中的數據完成自己的功能
@param response 具體的響應對象
*/
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response {
NSLog(@"收到一個(gè)來(lái)自微博客戶(hù)端程序的響應");
// 這里response就是返回來(lái)的數據,包含token,uid等鍵值對;
NSLog(@"%@",response.userInfo);
NSString *theString = [NSString stringWithFormat:@"https://api.weibo.com/2/users/ ... ot%3B,response.userInfo[@"access_token"],response.userInfo[@"uid"]];
// 這里只是通過(guò)URL對數據進(jìn)行請求,可以用系統的也可用AFNetworking,下面我使用對AFNetworking的簡(jiǎn)單封裝過(guò)后的方法,請忽略
[NetWork netWorkWithPath:theString Params:[NSDictionary dictionary] CallBack:^(NSDictionary *info, NetType type) {
// 這里info就包含請求回來(lái)的用戶(hù)頭像等數據
NSLog(@"%@",info);
}];
}
- (WBMessageObject *)messageToShare {
WBMessageObject *message = [WBMessageObject message];
message.text = @"測試使用";
return message;
}
?。。。?!如果輸入賬號后登錄返回403錯誤,是因為項目沒(méi)有通過(guò)審核,或者沒(méi)有添加測試賬號,請到申請信息-測試信息添加測試賬號 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺授權回調頁(yè)的代碼)
第 1 步:添加應用程序
進(jìn)入新浪微博開(kāi)放平臺(如果沒(méi)有,自行注冊),進(jìn)入“管理中心”,點(diǎn)擊“創(chuàng )建應用”,選擇“微鏈接應用”,然后點(diǎn)擊“創(chuàng )建應用”,選擇“手機申請”,并填寫(xiě)相應信息,如果沒(méi)有申請地址,選擇平臺提交即可。請記住保存您的 App Key 和 App Secret 以備后用。
第二步:Oauth2.0 授權設置
應用創(chuàng )建后,可以在“管理中心”-“我的應用”查看信息,“應用信息”-“高級信息”可以設置網(wǎng)站@的授權回調頁(yè)面和取消授權回調頁(yè)面>。用戶(hù)授權成功后會(huì )回調授權回調頁(yè)面,同時(shí)會(huì )返回一個(gè)“code”參數,開(kāi)發(fā)者可以用code換取Access_Token值。當然,如果是手機應用,比如本文沒(méi)有自己的授權回調頁(yè)面,建議填寫(xiě):或者類(lèi)似的。如果授權后返回的表單如下:
我們只需要得到代碼a6146547f981199c07348837b0629d5d的值。請注意,代碼的值每次都不同。
第三步:在你要點(diǎn)擊登錄的地方調整如下代碼(注意這里的redirectURI寫(xiě)你自己的回調頁(yè)面)
WBAuthorizeRequest *request = [WBAuthorizeRequest request];
request.redirectURI = @"你的授權回調頁(yè)網(wǎng)址";
request.scope = @"all";
[WeiboSDK sendRequest:request];
第四步:在appdelegate中引入頭文件,跟隨代理WeiboSDKDelegate
#import "WeiboSDK.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[WeiboSDK enableDebugMode:YES];
[WeiboSDK registerApp:kAppKey];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [WeiboSDK handleOpenURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [WeiboSDK handleOpenURL:url delegate:self];
}
/**
收到一個(gè)來(lái)自微博客戶(hù)端程序的請求
收到微博的請求后,第三方應用應該按照請求類(lèi)型進(jìn)行處理,處理完后必須通過(guò) [WeiboSDK sendResponse:] 將結果回傳給微博
@param request 具體的請求對象
*/
- (void)didReceiveWeiboRequest:(WBBaseRequest *)request {
WBProvideMessageForWeiboResponse *response = [WBProvideMessageForWeiboResponse responseWithMessage:[self messageToShare]];
[WeiboSDK sendResponse:response];
NSLog(@"收到一個(gè)來(lái)自微博客戶(hù)端程序的請求");
}
/**
收到一個(gè)來(lái)自微博客戶(hù)端程序的響應
收到微博的響應后,第三方應用可以通過(guò)響應類(lèi)型、響應的數據和 WBBaseResponse.userInfo 中的數據完成自己的功能
@param response 具體的響應對象
*/
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response {
NSLog(@"收到一個(gè)來(lái)自微博客戶(hù)端程序的響應");
// 這里response就是返回來(lái)的數據,包含token,uid等鍵值對;
NSLog(@"%@",response.userInfo);
NSString *theString = [NSString stringWithFormat:@"https://api.weibo.com/2/users/ ... ot%3B,response.userInfo[@"access_token"],response.userInfo[@"uid"]];
// 這里只是通過(guò)URL對數據進(jìn)行請求,可以用系統的也可用AFNetworking,下面我使用對AFNetworking的簡(jiǎn)單封裝過(guò)后的方法,請忽略
[NetWork netWorkWithPath:theString Params:[NSDictionary dictionary] CallBack:^(NSDictionary *info, NetType type) {
// 這里info就包含請求回來(lái)的用戶(hù)頭像等數據
NSLog(@"%@",info);
}];
}
- (WBMessageObject *)messageToShare {
WBMessageObject *message = [WBMessageObject message];
message.text = @"測試使用";
return message;
}
?。。。?!如果輸入賬號后登錄返回403錯誤,是因為項目沒(méi)有通過(guò)審核,或者沒(méi)有添加測試賬號,請到申請信息-測試信息添加測試賬號
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 76 次瀏覽 ? 2022-02-12 06:16
介紹
最近不太忙,花點(diǎn)時(shí)間學(xué)習android app開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子,可以從基本控件和基本動(dòng)畫(huà)效果的demo合集中放出,不斷更新下載。
從這周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的安卓客戶(hù)端,盡可能的完善功能。
今天的內容
上圖是這個(gè)客戶(hù)端的主界面。目前只獲取前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
操作系統是android2.2.
用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)Message、Handler、認證相關(guān)OAuth、異步加載用戶(hù)圖片等。
新浪微博的驗證使用signpost的OAuth組件,不使用微博的SDK。
源代碼下載:
關(guān)于 OAuth 身份驗證
OAuth是目前比較流行的一種授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式,國內新浪微博、騰訊微博、163微博等開(kāi)放平臺也已支持。這種驗證模式。
來(lái)自維基百科的引文
“oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用程序訪(fǎng)問(wèn)用戶(hù)放置在 網(wǎng)站 上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用程序。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)他們存儲在特定服務(wù)提供商處的數據?!?br /> 例如:
用戶(hù)A在服務(wù)提供者B上存儲了一些資源。B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。使用用戶(hù)名和密碼登錄B可以查看自己的資源。假設有一個(gè)應用程序C,當用戶(hù)A使用C時(shí),他需要自己存儲在B上的資源。有兩種方法可以在 C 上實(shí)現資源以在 B 上顯示自身。
這時(shí)C就可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想在B上展示資源時(shí),C會(huì )跳轉到B的驗證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣,您就不必擔心用戶(hù)名和密碼,也不必同時(shí)存儲多個(gè)資源。
您可以通過(guò)以下網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。
從上圖中我們可以看出,整個(gè)流程分為消費者和提供者兩部分。消費者是示例中的 C 應用程序,提供者是示例中的 B 服務(wù)提供者。
使用 OAuth 進(jìn)行認證和授權的流程如下:
用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作存儲在服務(wù)提供者中的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。服務(wù)提供者對客戶(hù)端進(jìn)行身份驗證后,將授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)token后,將用戶(hù)引導至服務(wù)提供者的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供商的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)商引導用戶(hù)返回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)授權授予客戶(hù)端訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲得的訪(fǎng)問(wèn)令牌來(lái)訪(fǎng)問(wèn)托管在服務(wù)提供商上的受保護資源。
新浪微博的誓言
借用一張新浪微博oauth驗證流程圖。
當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們會(huì )根據callback_url跳轉到我們應用的某個(gè)地址。我們再次使用request_token來(lái)獲取access_token,然后我們需要通過(guò)access token來(lái)訪(fǎng)問(wèn)需要驗證的開(kāi)放平臺提供的接口。
當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,可以直接使用key進(jìn)行訪(fǎng)問(wèn)。具體請參考開(kāi)放平臺提供的API文檔。
騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上也類(lèi)似。
packagecom.sinaweibo2;
importoauth.signpost.OAuthConsumer;
importoauth.signpost.OAuthProvider;
monshttp.CommonsHttpOAuthConsumer;
monshttp.CommonsHttpOAuthProvider;
importoauth.signpost.exception.OAuthCommunicationException;
importoauth.signpost.exception.OAuthExpectationFailedException;
importoauth.signpost.exception.OAuthMessageSignerException;
importoauth.signpost.exception.OAuthNotAuthorizedException;
公共類(lèi)OAuth {
privateOAuthConsumer mConsumer;
私有OAuthProvider mProvider;
publicstaticfinalString CALLBACK_URL="sinaweibo2://WeiboListActivity";
publicstaticfinalString CONSUMER_KEY="1849239616";
publicstaticfinalString CONSUMER_SECRET="b2137bf782bf6cae004b8a8394d5d5d6";
publicstaticfinalString REQUEST_TOKEN_URL = "";
publicstaticfinalString ACCESS_TOKEN_URL = "";
publicstaticfinalString AUTHORIZE_URL = "";
公共OAuth(){
}
publicString RetrieveAuthUrl() throwsOAuthMessageSignerException,
OAuthNotAuthorizedException、OAuthExpectationFailedException、
OAuthCommunicationException {
mConsumer =newCommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider =newCommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
returnauthUrl;
}
publicvoidRetrieveAccessToken(字符串驗證器)
throwsOAuthMessageSignerException、OAuthNotAuthorizedException、
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, 驗證者);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下來(lái)主要完善兩個(gè)功能,一是分頁(yè)瀏覽,二是發(fā)布微博。
未來(lái)可能支持圖片發(fā)布等實(shí)用功能。
有UI美化,性能優(yōu)化。
總結
在學(xué)習的過(guò)程中,我看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不錯的入門(mén)書(shū),書(shū)我沒(méi)有看完,但是看了大部分,邊看邊寫(xiě)demo。
同時(shí),論壇是eoe天天的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,總之就是鍛煉自己,強迫自己鍛煉基礎和思考。
論壇上有很多中文的pdf教程,但是我發(fā)現大部分都是android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容的翻譯。所以我覺(jué)得,如果英文不是很差,建議直接看上面兩節,同時(shí)練習里面的例子。保證在兩周內,你會(huì )取得很大的進(jìn)步。
參考
Technorati 標簽:android, 開(kāi)放平臺, oauth, 新浪微博 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
介紹
最近不太忙,花點(diǎn)時(shí)間學(xué)習android app開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子,可以從基本控件和基本動(dòng)畫(huà)效果的demo合集中放出,不斷更新下載。
從這周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的安卓客戶(hù)端,盡可能的完善功能。
今天的內容

上圖是這個(gè)客戶(hù)端的主界面。目前只獲取前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
操作系統是android2.2.
用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)Message、Handler、認證相關(guān)OAuth、異步加載用戶(hù)圖片等。
新浪微博的驗證使用signpost的OAuth組件,不使用微博的SDK。

源代碼下載:
關(guān)于 OAuth 身份驗證
OAuth是目前比較流行的一種授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式,國內新浪微博、騰訊微博、163微博等開(kāi)放平臺也已支持。這種驗證模式。
來(lái)自維基百科的引文
“oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用程序訪(fǎng)問(wèn)用戶(hù)放置在 網(wǎng)站 上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用程序。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)他們存儲在特定服務(wù)提供商處的數據?!?br /> 例如:
用戶(hù)A在服務(wù)提供者B上存儲了一些資源。B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。使用用戶(hù)名和密碼登錄B可以查看自己的資源。假設有一個(gè)應用程序C,當用戶(hù)A使用C時(shí),他需要自己存儲在B上的資源。有兩種方法可以在 C 上實(shí)現資源以在 B 上顯示自身。
這時(shí)C就可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想在B上展示資源時(shí),C會(huì )跳轉到B的驗證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣,您就不必擔心用戶(hù)名和密碼,也不必同時(shí)存儲多個(gè)資源。
您可以通過(guò)以下網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。

從上圖中我們可以看出,整個(gè)流程分為消費者和提供者兩部分。消費者是示例中的 C 應用程序,提供者是示例中的 B 服務(wù)提供者。
使用 OAuth 進(jìn)行認證和授權的流程如下:
用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作存儲在服務(wù)提供者中的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。服務(wù)提供者對客戶(hù)端進(jìn)行身份驗證后,將授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)token后,將用戶(hù)引導至服務(wù)提供者的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供商的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)商引導用戶(hù)返回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)授權授予客戶(hù)端訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲得的訪(fǎng)問(wèn)令牌來(lái)訪(fǎng)問(wèn)托管在服務(wù)提供商上的受保護資源。
新浪微博的誓言

借用一張新浪微博oauth驗證流程圖。
當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們會(huì )根據callback_url跳轉到我們應用的某個(gè)地址。我們再次使用request_token來(lái)獲取access_token,然后我們需要通過(guò)access token來(lái)訪(fǎng)問(wèn)需要驗證的開(kāi)放平臺提供的接口。
當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,可以直接使用key進(jìn)行訪(fǎng)問(wèn)。具體請參考開(kāi)放平臺提供的API文檔。
騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上也類(lèi)似。
packagecom.sinaweibo2;
importoauth.signpost.OAuthConsumer;
importoauth.signpost.OAuthProvider;
monshttp.CommonsHttpOAuthConsumer;
monshttp.CommonsHttpOAuthProvider;
importoauth.signpost.exception.OAuthCommunicationException;
importoauth.signpost.exception.OAuthExpectationFailedException;
importoauth.signpost.exception.OAuthMessageSignerException;
importoauth.signpost.exception.OAuthNotAuthorizedException;
公共類(lèi)OAuth {
privateOAuthConsumer mConsumer;
私有OAuthProvider mProvider;
publicstaticfinalString CALLBACK_URL="sinaweibo2://WeiboListActivity";
publicstaticfinalString CONSUMER_KEY="1849239616";
publicstaticfinalString CONSUMER_SECRET="b2137bf782bf6cae004b8a8394d5d5d6";
publicstaticfinalString REQUEST_TOKEN_URL = "";
publicstaticfinalString ACCESS_TOKEN_URL = "";
publicstaticfinalString AUTHORIZE_URL = "";
公共OAuth(){
}
publicString RetrieveAuthUrl() throwsOAuthMessageSignerException,
OAuthNotAuthorizedException、OAuthExpectationFailedException、
OAuthCommunicationException {
mConsumer =newCommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider =newCommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
returnauthUrl;
}
publicvoidRetrieveAccessToken(字符串驗證器)
throwsOAuthMessageSignerException、OAuthNotAuthorizedException、
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, 驗證者);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下來(lái)主要完善兩個(gè)功能,一是分頁(yè)瀏覽,二是發(fā)布微博。
未來(lái)可能支持圖片發(fā)布等實(shí)用功能。
有UI美化,性能優(yōu)化。
總結
在學(xué)習的過(guò)程中,我看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不錯的入門(mén)書(shū),書(shū)我沒(méi)有看完,但是看了大部分,邊看邊寫(xiě)demo。
同時(shí),論壇是eoe天天的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,總之就是鍛煉自己,強迫自己鍛煉基礎和思考。
論壇上有很多中文的pdf教程,但是我發(fā)現大部分都是android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容的翻譯。所以我覺(jué)得,如果英文不是很差,建議直接看上面兩節,同時(shí)練習里面的例子。保證在兩周內,你會(huì )取得很大的進(jìn)步。
參考
Technorati 標簽:android, 開(kāi)放平臺, oauth, 新浪微博
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(2017年6月微博出了更新分享微博的一下插件更新)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 77 次瀏覽 ? 2022-02-12 05:13
自2017年6月起,微博發(fā)布更新分享微博api接口的消息,emlog微博同步相關(guān)插件無(wú)法再使用。
有些人可能會(huì )發(fā)現,第一次使用新版微博api時(shí),總是會(huì )報錯10014和10017。這個(gè)時(shí)候不用擔心,只是微博權限增加了,仔細閱讀參數說(shuō)明和錯誤碼就可以解決問(wèn)題。
1、首先將原來(lái)的更新界面改為分享界面。點(diǎn)擊查看相關(guān)文件。注意必填參數status參數有很多描述權限:
用戶(hù)在微博上分享的文字內容必須經(jīng)過(guò)URL編碼,內容不超過(guò)140個(gè)漢字,文字不能收錄“#topic word#”,且文字必須至少收錄一個(gè)第三方分享到微博網(wǎng)頁(yè)的URL,并且 URL 只能是第三方(調用方)綁定域下的 URL 鏈接。綁定域在“我的應用-應用信息-基本應用信息編輯-安全域名”中設置。
看完這段話(huà),一目了然,相關(guān)的錯誤代碼在這里。
2、 然后是微博開(kāi)放平臺的配置,這里有兩點(diǎn)需要注意:
(1)AppKey、AppSecret及回調接口配置;
(2)安全域名的配置。
3、以上2點(diǎn)是重點(diǎn)??梢灾苯酉螺d微博SDK,輕松集成。
此處內容已被作者隱藏,請輸入驗證碼查看內容,請關(guān)注本站bilibili直播間,贈送大禮“B克拉”(限時(shí)1小時(shí)以?xún)龋?,獲取驗證碼,并以水印或彈幕的形式展示。掃描BilibiliApp右側二維碼進(jìn)入直播間。
評論:
1、如果運營(yíng)受到系統故障影響的概率非常低,只需要帶粉絲勛章的主播私信通知事件即可。
2、此行為純屬自愿贈送。
3、驗證碼生效一次后需要重新獲取。
4、使用注意事項:
這個(gè)插件是用 php5.6 編寫(xiě)的。如果遇到語(yǔ)法錯誤,只需適當降低 php 版本即可。
5、變更日志:
2018-06-02
1、修復發(fā)送微博時(shí)的字數限制;
2、添加了可以發(fā)到微博的圖片。
2018-05-09
1、2017年6月26日更新微博API微博同步功能。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(2017年6月微博出了更新分享微博的一下插件更新)
自2017年6月起,微博發(fā)布更新分享微博api接口的消息,emlog微博同步相關(guān)插件無(wú)法再使用。
有些人可能會(huì )發(fā)現,第一次使用新版微博api時(shí),總是會(huì )報錯10014和10017。這個(gè)時(shí)候不用擔心,只是微博權限增加了,仔細閱讀參數說(shuō)明和錯誤碼就可以解決問(wèn)題。
1、首先將原來(lái)的更新界面改為分享界面。點(diǎn)擊查看相關(guān)文件。注意必填參數status參數有很多描述權限:
用戶(hù)在微博上分享的文字內容必須經(jīng)過(guò)URL編碼,內容不超過(guò)140個(gè)漢字,文字不能收錄“#topic word#”,且文字必須至少收錄一個(gè)第三方分享到微博網(wǎng)頁(yè)的URL,并且 URL 只能是第三方(調用方)綁定域下的 URL 鏈接。綁定域在“我的應用-應用信息-基本應用信息編輯-安全域名”中設置。
看完這段話(huà),一目了然,相關(guān)的錯誤代碼在這里。
2、 然后是微博開(kāi)放平臺的配置,這里有兩點(diǎn)需要注意:
(1)AppKey、AppSecret及回調接口配置;
(2)安全域名的配置。
3、以上2點(diǎn)是重點(diǎn)??梢灾苯酉螺d微博SDK,輕松集成。

此處內容已被作者隱藏,請輸入驗證碼查看內容,請關(guān)注本站bilibili直播間,贈送大禮“B克拉”(限時(shí)1小時(shí)以?xún)龋?,獲取驗證碼,并以水印或彈幕的形式展示。掃描BilibiliApp右側二維碼進(jìn)入直播間。
評論:
1、如果運營(yíng)受到系統故障影響的概率非常低,只需要帶粉絲勛章的主播私信通知事件即可。
2、此行為純屬自愿贈送。
3、驗證碼生效一次后需要重新獲取。
4、使用注意事項:
這個(gè)插件是用 php5.6 編寫(xiě)的。如果遇到語(yǔ)法錯誤,只需適當降低 php 版本即可。
5、變更日志:
2018-06-02
1、修復發(fā)送微博時(shí)的字數限制;
2、添加了可以發(fā)到微博的圖片。
2018-05-09
1、2017年6月26日更新微博API微博同步功能。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(今天下午弄了個(gè)新浪微博同步應用,測試好多次,終于成功了)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 383 次瀏覽 ? 2022-02-12 05:09
今天下午做了一個(gè)新浪微博同步應用,測試了很多次,終于成功了。說(shuō)說(shuō)我的配置過(guò)程吧。歡迎做客我的新浪微博!
首先,你必須有一個(gè)新浪微博賬號。如果你沒(méi)有,你可以注冊一個(gè)。然后你就可以成為一名開(kāi)發(fā)人員??梢渣c(diǎn)擊微博賬號,也可以直接輸入網(wǎng)址:,選擇我是開(kāi)發(fā)者,選擇創(chuàng )建應用,填寫(xiě)開(kāi)發(fā)。用戶(hù)信息,成功后獲取你的APPKEY和APP SECRET,復制并保存。
然后,去下載SDK文檔,選擇PHP語(yǔ)言,查看“通過(guò)OAuth認證”。這就是我使用的。點(diǎn)擊下面的鏈接下載并解壓到本地。
第三步,開(kāi)始測試。將解壓后的 weobodemo 文件夾復制到 test 目錄下,也就是你的站點(diǎn)目錄。您必須提前配置虛擬域名。不知道的可以參考我的另一篇文章文章,使用apache配置一個(gè)獨立的虛擬域名。
在weibodemo文件夾下有一個(gè)配置文件config.php。打開(kāi)后你就知道該怎么做了。在里面寫(xiě)下你的APP KEY和APPSECRET。在瀏覽器中打開(kāi)這一層目錄,自動(dòng)運行index.php文件,無(wú)需贅述。
此時(shí)你會(huì )發(fā)現出錯了:Notice:Undefined index: SCRIPT_URI inD:\www\weibodemo\index.phponline13
打開(kāi)index.php發(fā)現$_SERVER['SCRIPT_URI'],$_SERVER的參數根本沒(méi)有這個(gè)SCRIPT_URI,忽略它,點(diǎn)擊下面的鏈接,然后出現錯誤:對不起,那個(gè)頁(yè)面不存在!
至此,估計很多人都會(huì )放棄,一時(shí)之間不知所措。其實(shí),不要把新浪微博寫(xiě)的關(guān)于應用開(kāi)發(fā)的文章看的那么深,一般人都能看懂。仔細查看 index.php。你剛才點(diǎn)擊的鏈接地址是由WeiboOAuth類(lèi)中的getAuthorizeURL方法生成的,和下一個(gè)回調函數相關(guān),就是callback.php文件。
由此我們不難想到這個(gè)過(guò)程:首先獲取本地配置文件config.php中的APP KEY和APPSECRET,然后我們要驗證APP KEY是否合法,并詢(xún)問(wèn)我們是否授權這個(gè)應用同步更新微博,如果條件成立,則通過(guò)callback.php返回本地,我們可以在這個(gè)回調頁(yè)面寫(xiě)微博,最后點(diǎn)擊發(fā)布,從新浪官方微博登錄,就可以看到剛剛發(fā)布的消息文章 消息,下面要標注“from xxx”
這個(gè)道理不難理解。把$_SERVER['SCRIPT_URI']改成我們本地的地址,就是它所在目錄的虛擬域名的地址,這樣就可以返回callback.php,這樣就找不到頁(yè)面了。錯誤的。比如:我的本地虛擬凹陷是指向文件夾d:/www/,而我的weibodemo文件夾放在/www/下,那我就改$_SERVER['SCRIPT_URI']連接到下面的/callback.php沒(méi)關(guān)系。
這樣你就可以在顯示“授權完成”后點(diǎn)擊進(jìn)入你的微博界面weebolist.php。進(jìn)入后你會(huì )驚訝:挺粗糙的,沒(méi)有風(fēng)格,簡(jiǎn)單的html表單,哈哈,新浪微博的程序員怎么這么懶。趕緊發(fā)個(gè)微博,測試一下,激動(dòng)一下,呵呵。
我們可以總結一下,其實(shí)很簡(jiǎn)單。一共只有6個(gè)文件:config.php是配置文件。通過(guò)index.php進(jìn)入新浪微博的驗證授權頁(yè)面。同意授權后,返回callback.php頁(yè)面,點(diǎn)擊進(jìn)入。我的微博,去微博發(fā)布和列表頁(yè)weibolist.php,然后發(fā)布微博,就OK了。剩下的文件weibooauth.php是一個(gè)類(lèi)文件,里面有很多類(lèi)和函數,都是前面用到的。如果你有興趣,你可以研究它,但你可以忽略它。還有一個(gè)什么都不知道的.DS_Stor,打開(kāi)就是亂碼,我也不管,估計沒(méi)用。
另外提醒注意頁(yè)面的編碼格式,如有亂碼請耐心調試。
本文轉載自: 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(今天下午弄了個(gè)新浪微博同步應用,測試好多次,終于成功了)
今天下午做了一個(gè)新浪微博同步應用,測試了很多次,終于成功了。說(shuō)說(shuō)我的配置過(guò)程吧。歡迎做客我的新浪微博!
首先,你必須有一個(gè)新浪微博賬號。如果你沒(méi)有,你可以注冊一個(gè)。然后你就可以成為一名開(kāi)發(fā)人員??梢渣c(diǎn)擊微博賬號,也可以直接輸入網(wǎng)址:,選擇我是開(kāi)發(fā)者,選擇創(chuàng )建應用,填寫(xiě)開(kāi)發(fā)。用戶(hù)信息,成功后獲取你的APPKEY和APP SECRET,復制并保存。
然后,去下載SDK文檔,選擇PHP語(yǔ)言,查看“通過(guò)OAuth認證”。這就是我使用的。點(diǎn)擊下面的鏈接下載并解壓到本地。
第三步,開(kāi)始測試。將解壓后的 weobodemo 文件夾復制到 test 目錄下,也就是你的站點(diǎn)目錄。您必須提前配置虛擬域名。不知道的可以參考我的另一篇文章文章,使用apache配置一個(gè)獨立的虛擬域名。
在weibodemo文件夾下有一個(gè)配置文件config.php。打開(kāi)后你就知道該怎么做了。在里面寫(xiě)下你的APP KEY和APPSECRET。在瀏覽器中打開(kāi)這一層目錄,自動(dòng)運行index.php文件,無(wú)需贅述。
此時(shí)你會(huì )發(fā)現出錯了:Notice:Undefined index: SCRIPT_URI inD:\www\weibodemo\index.phponline13
打開(kāi)index.php發(fā)現$_SERVER['SCRIPT_URI'],$_SERVER的參數根本沒(méi)有這個(gè)SCRIPT_URI,忽略它,點(diǎn)擊下面的鏈接,然后出現錯誤:對不起,那個(gè)頁(yè)面不存在!
至此,估計很多人都會(huì )放棄,一時(shí)之間不知所措。其實(shí),不要把新浪微博寫(xiě)的關(guān)于應用開(kāi)發(fā)的文章看的那么深,一般人都能看懂。仔細查看 index.php。你剛才點(diǎn)擊的鏈接地址是由WeiboOAuth類(lèi)中的getAuthorizeURL方法生成的,和下一個(gè)回調函數相關(guān),就是callback.php文件。
由此我們不難想到這個(gè)過(guò)程:首先獲取本地配置文件config.php中的APP KEY和APPSECRET,然后我們要驗證APP KEY是否合法,并詢(xún)問(wèn)我們是否授權這個(gè)應用同步更新微博,如果條件成立,則通過(guò)callback.php返回本地,我們可以在這個(gè)回調頁(yè)面寫(xiě)微博,最后點(diǎn)擊發(fā)布,從新浪官方微博登錄,就可以看到剛剛發(fā)布的消息文章 消息,下面要標注“from xxx”
這個(gè)道理不難理解。把$_SERVER['SCRIPT_URI']改成我們本地的地址,就是它所在目錄的虛擬域名的地址,這樣就可以返回callback.php,這樣就找不到頁(yè)面了。錯誤的。比如:我的本地虛擬凹陷是指向文件夾d:/www/,而我的weibodemo文件夾放在/www/下,那我就改$_SERVER['SCRIPT_URI']連接到下面的/callback.php沒(méi)關(guān)系。
這樣你就可以在顯示“授權完成”后點(diǎn)擊進(jìn)入你的微博界面weebolist.php。進(jìn)入后你會(huì )驚訝:挺粗糙的,沒(méi)有風(fēng)格,簡(jiǎn)單的html表單,哈哈,新浪微博的程序員怎么這么懶。趕緊發(fā)個(gè)微博,測試一下,激動(dòng)一下,呵呵。
我們可以總結一下,其實(shí)很簡(jiǎn)單。一共只有6個(gè)文件:config.php是配置文件。通過(guò)index.php進(jìn)入新浪微博的驗證授權頁(yè)面。同意授權后,返回callback.php頁(yè)面,點(diǎn)擊進(jìn)入。我的微博,去微博發(fā)布和列表頁(yè)weibolist.php,然后發(fā)布微博,就OK了。剩下的文件weibooauth.php是一個(gè)類(lèi)文件,里面有很多類(lèi)和函數,都是前面用到的。如果你有興趣,你可以研究它,但你可以忽略它。還有一個(gè)什么都不知道的.DS_Stor,打開(kāi)就是亂碼,我也不管,估計沒(méi)用。
另外提醒注意頁(yè)面的編碼格式,如有亂碼請耐心調試。
本文轉載自:
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(QQ登錄OAuth2.0,PHP,Java等多個(gè)版本的SDK)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 70 次瀏覽 ? 2022-02-06 17:17
內容
1.什么是“QQ登錄OAuth2.0”
OAuth:OAuth(開(kāi)放授權)是一種開(kāi)放標準,允許用戶(hù)授權第三方網(wǎng)站訪(fǎng)問(wèn)他們存儲在另一個(gè)服務(wù)提供商上的信息,而無(wú)需向第三方提供用戶(hù)名和密碼網(wǎng)站或共享所有他們的數據。
QQ登錄OAuth2.0:對于用戶(hù)相關(guān)的OpenAPI(如獲取用戶(hù)信息、動(dòng)態(tài)同步、照片、日志、分享等),為了保護用戶(hù)數據的安全和隱私,第三方< @網(wǎng)站 訪(fǎng)問(wèn)用戶(hù) 訪(fǎng)問(wèn)數據前需要明確要求用戶(hù)授權。
QQ登錄OAuth2.0使用OAuth2.0標準協(xié)議對用戶(hù)進(jìn)行認證,獲取用戶(hù)授權。與之前的 OAuth1.0 協(xié)議相比,認證過(guò)程更簡(jiǎn)單、更安全。
因此,請使用 OAuth 1.0 協(xié)議的 網(wǎng)站 升級到 OAuth 2.0 協(xié)議。升級方法請參考 OAuth1.0 升級到 OAuth2.0 指南。
尖端:
如果想擴展對OAuth2.0開(kāi)放標準的閱讀,請參考:OAuth標準(英文)| OAuth 維基百科(中文)
2.QQ登錄OAuth2.0訪(fǎng)問(wèn)方式
QQ登錄OAuth2.0支持網(wǎng)站訪(fǎng)問(wèn)和手機應用訪(fǎng)問(wèn)。
網(wǎng)站可以通過(guò)以下兩種方式訪(fǎng)問(wèn)??:
?。?)使用QQ互聯(lián)網(wǎng)提供的SDK包,用戶(hù)體驗統一,只需要修改少量代碼,無(wú)需了解驗證和授權流程,可以使用此方法適用于網(wǎng)站和需要快速訪(fǎng)問(wèn)QQ登錄的手機應用。
QQ互聯(lián)網(wǎng)提供了JavaScript、PHP、Java等多個(gè)版本的SDK,詳情請參考:SDK下載
QQ登錄JS SDK見(jiàn):JS SDK使用說(shuō)明
?。?)根據QQ登錄OAuth2.0協(xié)議,自行開(kāi)發(fā),此方式定制化程度高,網(wǎng)站及需要與現有系統集成的移動(dòng)應用可以選擇這種方法。
參見(jiàn):OAuth2.0 開(kāi)發(fā)文檔
可以通過(guò)兩種方式訪(fǎng)問(wèn)??移動(dòng)應用程序開(kāi)發(fā):
(1)使用QQ互聯(lián)網(wǎng)提供的iOS、Android等平臺的SDK包,用戶(hù)體驗統一,只需要修改少量代碼,無(wú)需了解驗證授權需要快速訪(fǎng)問(wèn)QQ登錄的應用可以選擇這種方式。
iOS和Android版本的SDK都支持網(wǎng)頁(yè)視圖和瀏覽器模式,即支持跳轉到手機瀏覽器進(jìn)行QQ登錄和驗證過(guò)程。開(kāi)發(fā)者可以在SDK包中選擇瀏覽器模式,但是瀏覽器模式用戶(hù)跳轉很多,所以不推薦使用。
見(jiàn):SDK下載
?。?)根據QQ登錄OAuth2.0協(xié)議,自行開(kāi)發(fā),該方式定制化程度高,移動(dòng)應用需要與現有系統集成可以選擇該方式。
建議移動(dòng)應用使用webview打開(kāi)登錄頁(yè)面。登錄成功后獲取accesstoken和openid,關(guān)閉webview控件。用戶(hù)體驗更好。
參見(jiàn):OAuth2.0 開(kāi)發(fā)文檔
對于A(yíng)ndroid2.1以下的版本,訪(fǎng)問(wèn)https時(shí)會(huì )出現簽名證書(shū)驗證的問(wèn)題,解決方法可以看這里。
3.QQ登錄OAuth2.0整體處理流程
QQ登錄OAuth2.0整體處理流程如下:
Step1:申請訪(fǎng)問(wèn),獲取appid和apikey;
Step2:開(kāi)發(fā)應用并設置協(xié)作者賬號,用于測試和聯(lián)調;
Step3:放置QQ登錄按鈕;
Step4:通過(guò)用戶(hù)登錄驗證和授權獲取Access Token;
Step5:通過(guò)Access Token獲取用戶(hù)的OpenID;
Step6:調用OpenAPI請求訪(fǎng)問(wèn)或修改用戶(hù)授權的資源。
4.QQ登錄OAuth2.0開(kāi)發(fā)說(shuō)明
開(kāi)發(fā)者需要根據騰訊提供的 UI 規范、請求描述、接口描述,開(kāi)發(fā) UI 和代碼。
有關(guān)詳細信息,請參閱 OAuth2.0 開(kāi)發(fā)文檔。
以上信息是否解決了您的問(wèn)題?
為了讓我們更有效地優(yōu)化我們的數據庫并有針對性地改進(jìn)我們的服務(wù),我們需要您進(jìn)一步反饋:
提交成功!
非常感謝您的反饋,我們會(huì )繼續努力讓它變得更好!
提交成功!
感謝您的批評和建議,我們將進(jìn)行針對性的優(yōu)化,為您提供更好的服務(wù)。
開(kāi)放平臺與您一起成長(cháng)!
取自“%E7%AE%80%E4%BB%8B” 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(QQ登錄OAuth2.0,PHP,Java等多個(gè)版本的SDK)
內容
1.什么是“QQ登錄OAuth2.0”
OAuth:OAuth(開(kāi)放授權)是一種開(kāi)放標準,允許用戶(hù)授權第三方網(wǎng)站訪(fǎng)問(wèn)他們存儲在另一個(gè)服務(wù)提供商上的信息,而無(wú)需向第三方提供用戶(hù)名和密碼網(wǎng)站或共享所有他們的數據。
QQ登錄OAuth2.0:對于用戶(hù)相關(guān)的OpenAPI(如獲取用戶(hù)信息、動(dòng)態(tài)同步、照片、日志、分享等),為了保護用戶(hù)數據的安全和隱私,第三方< @網(wǎng)站 訪(fǎng)問(wèn)用戶(hù) 訪(fǎng)問(wèn)數據前需要明確要求用戶(hù)授權。
QQ登錄OAuth2.0使用OAuth2.0標準協(xié)議對用戶(hù)進(jìn)行認證,獲取用戶(hù)授權。與之前的 OAuth1.0 協(xié)議相比,認證過(guò)程更簡(jiǎn)單、更安全。
因此,請使用 OAuth 1.0 協(xié)議的 網(wǎng)站 升級到 OAuth 2.0 協(xié)議。升級方法請參考 OAuth1.0 升級到 OAuth2.0 指南。
尖端:
如果想擴展對OAuth2.0開(kāi)放標準的閱讀,請參考:OAuth標準(英文)| OAuth 維基百科(中文)
2.QQ登錄OAuth2.0訪(fǎng)問(wèn)方式
QQ登錄OAuth2.0支持網(wǎng)站訪(fǎng)問(wèn)和手機應用訪(fǎng)問(wèn)。
網(wǎng)站可以通過(guò)以下兩種方式訪(fǎng)問(wèn)??:
?。?)使用QQ互聯(lián)網(wǎng)提供的SDK包,用戶(hù)體驗統一,只需要修改少量代碼,無(wú)需了解驗證和授權流程,可以使用此方法適用于網(wǎng)站和需要快速訪(fǎng)問(wèn)QQ登錄的手機應用。
QQ互聯(lián)網(wǎng)提供了JavaScript、PHP、Java等多個(gè)版本的SDK,詳情請參考:SDK下載
QQ登錄JS SDK見(jiàn):JS SDK使用說(shuō)明
?。?)根據QQ登錄OAuth2.0協(xié)議,自行開(kāi)發(fā),此方式定制化程度高,網(wǎng)站及需要與現有系統集成的移動(dòng)應用可以選擇這種方法。
參見(jiàn):OAuth2.0 開(kāi)發(fā)文檔
可以通過(guò)兩種方式訪(fǎng)問(wèn)??移動(dòng)應用程序開(kāi)發(fā):
(1)使用QQ互聯(lián)網(wǎng)提供的iOS、Android等平臺的SDK包,用戶(hù)體驗統一,只需要修改少量代碼,無(wú)需了解驗證授權需要快速訪(fǎng)問(wèn)QQ登錄的應用可以選擇這種方式。
iOS和Android版本的SDK都支持網(wǎng)頁(yè)視圖和瀏覽器模式,即支持跳轉到手機瀏覽器進(jìn)行QQ登錄和驗證過(guò)程。開(kāi)發(fā)者可以在SDK包中選擇瀏覽器模式,但是瀏覽器模式用戶(hù)跳轉很多,所以不推薦使用。
見(jiàn):SDK下載
?。?)根據QQ登錄OAuth2.0協(xié)議,自行開(kāi)發(fā),該方式定制化程度高,移動(dòng)應用需要與現有系統集成可以選擇該方式。
建議移動(dòng)應用使用webview打開(kāi)登錄頁(yè)面。登錄成功后獲取accesstoken和openid,關(guān)閉webview控件。用戶(hù)體驗更好。
參見(jiàn):OAuth2.0 開(kāi)發(fā)文檔
對于A(yíng)ndroid2.1以下的版本,訪(fǎng)問(wèn)https時(shí)會(huì )出現簽名證書(shū)驗證的問(wèn)題,解決方法可以看這里。
3.QQ登錄OAuth2.0整體處理流程
QQ登錄OAuth2.0整體處理流程如下:
Step1:申請訪(fǎng)問(wèn),獲取appid和apikey;
Step2:開(kāi)發(fā)應用并設置協(xié)作者賬號,用于測試和聯(lián)調;
Step3:放置QQ登錄按鈕;
Step4:通過(guò)用戶(hù)登錄驗證和授權獲取Access Token;
Step5:通過(guò)Access Token獲取用戶(hù)的OpenID;
Step6:調用OpenAPI請求訪(fǎng)問(wèn)或修改用戶(hù)授權的資源。
4.QQ登錄OAuth2.0開(kāi)發(fā)說(shuō)明
開(kāi)發(fā)者需要根據騰訊提供的 UI 規范、請求描述、接口描述,開(kāi)發(fā) UI 和代碼。
有關(guān)詳細信息,請參閱 OAuth2.0 開(kāi)發(fā)文檔。
以上信息是否解決了您的問(wèn)題?
為了讓我們更有效地優(yōu)化我們的數據庫并有針對性地改進(jìn)我們的服務(wù),我們需要您進(jìn)一步反饋:
提交成功!
非常感謝您的反饋,我們會(huì )繼續努力讓它變得更好!
提交成功!
感謝您的批評和建議,我們將進(jìn)行針對性的優(yōu)化,為您提供更好的服務(wù)。
開(kāi)放平臺與您一起成長(cháng)!
取自“%E7%AE%80%E4%BB%8B”
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(PHP下通過(guò)API實(shí)現與新浪微博同步應用測試好多次)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 79 次瀏覽 ? 2022-02-05 20:20
(轉貼) PHP下通過(guò)API與新浪微博同步
今天下午做了一個(gè)新浪微博同步應用,測試了很多次,終于成功了。說(shuō)說(shuō)我的配置過(guò)程吧。歡迎做客我的新浪微博!
首先,你必須有一個(gè)新浪微博賬號。如果你沒(méi)有,你可以注冊一個(gè)。然后你就可以成為一名開(kāi)發(fā)人員??梢渣c(diǎn)擊微博賬號,也可以直接輸入網(wǎng)址:選擇我是開(kāi)發(fā)者,選擇創(chuàng )建應用,填寫(xiě)開(kāi)發(fā)。用戶(hù)信息,成功后獲取你的APPKEY和APPSECRET,復制并保存。
然后,去下載SDK文檔,選擇PHP語(yǔ)言,查看“通過(guò)OAuth認證方式”。這就是我使用的。點(diǎn)擊下面的鏈接下載并解壓到本地。
第三步,開(kāi)始測試。將解壓后的 weobodemo 文件夾復制到 test 目錄下,也就是你的站點(diǎn)目錄。您必須提前配置虛擬域名。不知道的可以參考我的另一篇文章文章,使用apache配置一個(gè)獨立的虛擬域名。
weibodemo文件夾下有一個(gè)配置文件config.php。打開(kāi)后你就知道該怎么做了。在里面寫(xiě)下你的 APPKEY 和 APPSECRET。在瀏覽器中打開(kāi)這一層目錄,自動(dòng)運行index.php文件,無(wú)需贅述。
此時(shí)你會(huì )發(fā)現出錯了:Notice:Undefinedindex:SCRIPT_URIinD:\www\weibodemo\index.phponline13
打開(kāi)index.php發(fā)現$_SERVER['SCRIPT_URI'],$_SERVER的參數根本沒(méi)有這個(gè)SCRIPT_URI,忽略它,點(diǎn)擊下面的鏈接,然后報錯:對不起,那個(gè)頁(yè)面不存在!
至此,估計很多人都會(huì )放棄,一時(shí)之間不知所措。其實(shí),不要把新浪微博寫(xiě)的關(guān)于應用開(kāi)發(fā)的文章看的那么深,一般人都能看懂。仔細查看 index.php。剛才點(diǎn)擊的鏈接地址是由WeiboOAuth類(lèi)中的getAuthorizeURL方法生成的,和下一個(gè)回調函數相關(guān),就是callback.php文件。
由此我們不難想到這個(gè)過(guò)程:首先獲取本地配置文件config.php中的APPKEY和APPSECRET,然后我們要驗證APPKEY是否合法,并詢(xún)問(wèn)我們是否授權應用更新微博同步,如果條件成立,則通過(guò)callback.php返回本地,我們可以在這個(gè)回調頁(yè)面寫(xiě)微博,最后點(diǎn)擊發(fā)布,從新浪官方微博登錄,就可以看到剛剛發(fā)送的消息文章 ,以下應標記為“來(lái)自xxx”
這個(gè)道理不難理解。把$_SERVER['SCRIPT_URI']改成我們本地的地址,就是它所在目錄的虛擬域名的地址,這樣就可以返回callback.php,這樣就找不到頁(yè)面了。錯誤的。比如:我的本地虛擬凹陷是這樣的,知道文件夾d:/www/,我的weibodemo文件夾放在/www/下,那我改$_SERVER['SCRIPT_URI']連接下面的/callback.php就可以了.
這樣你就可以在顯示“授權完成”后點(diǎn)擊進(jìn)入你的微博界面weebolist.php。進(jìn)入后你會(huì )驚訝:挺粗糙的,沒(méi)有風(fēng)格,簡(jiǎn)單的html表單,哈哈,新浪微博的程序員怎么這么懶。趕緊發(fā)個(gè)微博,測試一下,激動(dòng),呵呵。
我們可以總結一下,其實(shí)很簡(jiǎn)單。一共只有6個(gè)文件:config.php是配置文件。通過(guò)index.php進(jìn)入新浪微博的驗證授權頁(yè)面。同意授權后,返回callback.php頁(yè)面,點(diǎn)擊進(jìn)入。我的微博,去微博發(fā)布和列表頁(yè)weibolist.php,然后發(fā)布微博,就OK了。剩下的文件weibooauth.php是一個(gè)類(lèi)文件,里面有很多類(lèi)和函數,都是之前用到的。如果你有興趣,你可以研究它,但你可以忽略它。還有一個(gè)我一無(wú)所知的 .DS_Stor。打開(kāi)就是亂碼,我不在乎。估計沒(méi)用。
另外提醒大家注意頁(yè)面的編碼格式,如果出現亂碼請耐心調試。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(PHP下通過(guò)API實(shí)現與新浪微博同步應用測試好多次)
(轉貼) PHP下通過(guò)API與新浪微博同步
今天下午做了一個(gè)新浪微博同步應用,測試了很多次,終于成功了。說(shuō)說(shuō)我的配置過(guò)程吧。歡迎做客我的新浪微博!
首先,你必須有一個(gè)新浪微博賬號。如果你沒(méi)有,你可以注冊一個(gè)。然后你就可以成為一名開(kāi)發(fā)人員??梢渣c(diǎn)擊微博賬號,也可以直接輸入網(wǎng)址:選擇我是開(kāi)發(fā)者,選擇創(chuàng )建應用,填寫(xiě)開(kāi)發(fā)。用戶(hù)信息,成功后獲取你的APPKEY和APPSECRET,復制并保存。
然后,去下載SDK文檔,選擇PHP語(yǔ)言,查看“通過(guò)OAuth認證方式”。這就是我使用的。點(diǎn)擊下面的鏈接下載并解壓到本地。
第三步,開(kāi)始測試。將解壓后的 weobodemo 文件夾復制到 test 目錄下,也就是你的站點(diǎn)目錄。您必須提前配置虛擬域名。不知道的可以參考我的另一篇文章文章,使用apache配置一個(gè)獨立的虛擬域名。
weibodemo文件夾下有一個(gè)配置文件config.php。打開(kāi)后你就知道該怎么做了。在里面寫(xiě)下你的 APPKEY 和 APPSECRET。在瀏覽器中打開(kāi)這一層目錄,自動(dòng)運行index.php文件,無(wú)需贅述。
此時(shí)你會(huì )發(fā)現出錯了:Notice:Undefinedindex:SCRIPT_URIinD:\www\weibodemo\index.phponline13
打開(kāi)index.php發(fā)現$_SERVER['SCRIPT_URI'],$_SERVER的參數根本沒(méi)有這個(gè)SCRIPT_URI,忽略它,點(diǎn)擊下面的鏈接,然后報錯:對不起,那個(gè)頁(yè)面不存在!
至此,估計很多人都會(huì )放棄,一時(shí)之間不知所措。其實(shí),不要把新浪微博寫(xiě)的關(guān)于應用開(kāi)發(fā)的文章看的那么深,一般人都能看懂。仔細查看 index.php。剛才點(diǎn)擊的鏈接地址是由WeiboOAuth類(lèi)中的getAuthorizeURL方法生成的,和下一個(gè)回調函數相關(guān),就是callback.php文件。
由此我們不難想到這個(gè)過(guò)程:首先獲取本地配置文件config.php中的APPKEY和APPSECRET,然后我們要驗證APPKEY是否合法,并詢(xún)問(wèn)我們是否授權應用更新微博同步,如果條件成立,則通過(guò)callback.php返回本地,我們可以在這個(gè)回調頁(yè)面寫(xiě)微博,最后點(diǎn)擊發(fā)布,從新浪官方微博登錄,就可以看到剛剛發(fā)送的消息文章 ,以下應標記為“來(lái)自xxx”
這個(gè)道理不難理解。把$_SERVER['SCRIPT_URI']改成我們本地的地址,就是它所在目錄的虛擬域名的地址,這樣就可以返回callback.php,這樣就找不到頁(yè)面了。錯誤的。比如:我的本地虛擬凹陷是這樣的,知道文件夾d:/www/,我的weibodemo文件夾放在/www/下,那我改$_SERVER['SCRIPT_URI']連接下面的/callback.php就可以了.
這樣你就可以在顯示“授權完成”后點(diǎn)擊進(jìn)入你的微博界面weebolist.php。進(jìn)入后你會(huì )驚訝:挺粗糙的,沒(méi)有風(fēng)格,簡(jiǎn)單的html表單,哈哈,新浪微博的程序員怎么這么懶。趕緊發(fā)個(gè)微博,測試一下,激動(dòng),呵呵。
我們可以總結一下,其實(shí)很簡(jiǎn)單。一共只有6個(gè)文件:config.php是配置文件。通過(guò)index.php進(jìn)入新浪微博的驗證授權頁(yè)面。同意授權后,返回callback.php頁(yè)面,點(diǎn)擊進(jìn)入。我的微博,去微博發(fā)布和列表頁(yè)weibolist.php,然后發(fā)布微博,就OK了。剩下的文件weibooauth.php是一個(gè)類(lèi)文件,里面有很多類(lèi)和函數,都是之前用到的。如果你有興趣,你可以研究它,但你可以忽略它。還有一個(gè)我一無(wú)所知的 .DS_Stor。打開(kāi)就是亂碼,我不在乎。估計沒(méi)用。
另外提醒大家注意頁(yè)面的編碼格式,如果出現亂碼請耐心調試。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(聯(lián)合第三方平臺登錄接入,初次接觸開(kāi)放平臺和AppSecret5 )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 62 次瀏覽 ? 2022-02-05 20:17
)
最近做了一個(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è)appkey和一個(gè)App Secret。這些是入口。您必須先獲得這兩個(gè),然后才能進(jìn)行下一個(gè)訪(fǎng)問(wèn)工作。
4、輸入完善個(gè)人信息后,必須完成身份驗證審核。審核完成后,新浪開(kāi)放平臺會(huì )給出appkey和App Secret。
5、接下來(lái)就是如何使用appkey和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)如下:
我們之前申請的appkey和App Secret就派上用場(chǎng)了。這里的client_ID為appkey,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"),至于為什么,請看這里的接口文檔說(shuō)明使用 oauth.authorize
假設我們這里沒(méi)有回調地址,配置文件中的redirect_URI為空。運行后會(huì )自動(dòng)打開(kāi)瀏覽器運行測試,顯示如下:
此時(shí)的URL地址為:
這說(shuō)明我的appkey和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和域名,我在局域網(wǎng)玩的時(shí)候隨便填,但是不能用localhost代替127.0.0.1,這里是按照配置要求做的,這個(gè)配置的要求很?chē)栏瘢?br /> 尤其是下面的應用圖標比較麻煩。完成后,您可以提交它們以供審核。
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();*/
查看全部
使用新浪微博開(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è)appkey和一個(gè)App Secret。這些是入口。您必須先獲得這兩個(gè),然后才能進(jìn)行下一個(gè)訪(fǎng)問(wèn)工作。
4、輸入完善個(gè)人信息后,必須完成身份驗證審核。審核完成后,新浪開(kāi)放平臺會(huì )給出appkey和App Secret。
5、接下來(lái)就是如何使用appkey和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)如下:

我們之前申請的appkey和App Secret就派上用場(chǎng)了。這里的client_ID為appkey,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"),至于為什么,請看這里的接口文檔說(shuō)明使用 oauth.authorize
假設我們這里沒(méi)有回調地址,配置文件中的redirect_URI為空。運行后會(huì )自動(dòng)打開(kāi)瀏覽器運行測試,顯示如下:

此時(shí)的URL地址為:
這說(shuō)明我的appkey和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和域名,我在局域網(wǎng)玩的時(shí)候隨便填,但是不能用localhost代替127.0.0.1,這里是按照配置要求做的,這個(gè)配置的要求很?chē)栏瘢?br /> 尤其是下面的應用圖標比較麻煩。完成后,您可以提交它們以供審核。
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();*/

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何獲取AccessToken以及如何使用新浪微博API的使用方式)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 78 次瀏覽 ? 2022-02-05 20:16
因為畢業(yè)項目需要用到微博數據采集,所以獲取微博數據的方式主要有兩種:基于官方API和基于網(wǎng)絡(luò )爬蟲(chóng)。讓我們看看這些天如何使用官方API。比較麻煩的是oauth2的驗證,今天看到一個(gè)帖子,實(shí)踐了一下API的使用方法,轉載過(guò)來(lái)看看。
轉載至:
使用新浪微博API的前提是在新浪微博開(kāi)放平臺上注冊一個(gè)應用,獲取App Key和App Secret,然后根據這兩個(gè)獲取Access Token。下面詳細介紹如何獲取Access Token以及如何使用新浪微博提供的API。
一、獲取訪(fǎng)問(wèn)令牌
1、進(jìn)入新浪微博開(kāi)放平臺,進(jìn)入應用開(kāi)發(fā),選擇創(chuàng )建應用,這里我選擇“web應用”
2、填寫(xiě)申請的基本信息
隨便填什么,點(diǎn)擊“創(chuàng )建”,就可以創(chuàng )建成功了!
創(chuàng )建成功后,可以查看應用信息。您需要的主要是 App Key 和 App Secret。
3、添加授權回調頁(yè)面
選擇剛剛創(chuàng )建的應用,進(jìn)入應用信息,選擇高級信息,添加授權回調頁(yè)面。
這必須添加。如果回調頁(yè)面沒(méi)有被授權,則無(wú)法獲取Access Token,必須保證回調頁(yè)面的URL是可訪(fǎng)問(wèn)的。
4、獲取新浪微博SDK包
在新浪微博開(kāi)放平臺,選擇文檔->資源下載->SDK下載,我選擇JavaSDK的版本。下載完成后,解壓并將項目導入Eclipse。
可以查看文檔:readme.txt,內容為:
[清楚的]
請先填寫(xiě)相關(guān)配置:在Config.properties中client_ID:appkey client_SERCRET:app_secret redirect_URI:回調地址
即需要配置運行項目的前提。
5、配置SDK開(kāi)發(fā)包
打開(kāi) Config.properties 文件(在 src 目錄中)
[清楚的]
client_ID= client_SERCRET= redirect_URI= baseURL= accessTokenURL= authorizeURL= rmURL=
您需要填寫(xiě)client_ID、client_SERCRET、redirect_URI,這些必須與您的應用程序相對應。格式與以下相同。不要放雙引號,不要在末尾放分號。
6、獲取訪(fǎng)問(wèn)令牌
打開(kāi)示例資源文件夾,weibo4j.examples.oauth2文件夾中的OAuth4Code.java
放上代碼:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code",args[1],args[2])); System.out.println(oauth.authorize("code",args[1],args[2]));
變成:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code","","")); System.out.println(oauth.authorize("code","",""));
即刪除 args 參數。
然后選擇run as Java Application,打開(kāi)瀏覽器,也就是打開(kāi)你填寫(xiě)的回調地址,注意此時(shí)的url,最后一部分是code=XXXXXXXXXXXXXXXXXXXXX。復制此代碼的值。查看 Eclipse 的控制臺窗口:
輸入您剛剛獲得的代碼值,然后按 Enter。
至此,您已經(jīng)獲得了access_token值和uid值,現在可以使用access_token運行示例中的程序了。注意access_token的取值有一定的時(shí)效性。access_token過(guò)期后需要重新申請,即重復第6步,access_token的值不會(huì )每次都改變。
二、運行示例程序
我在weibo4j.examples.timeline中選擇了ShowStatus.java。將access_token替換為剛剛獲取的值,id指的是微博的ID,運行它,可以得到微博的信息和用戶(hù)的信息。注意這里的第二個(gè)參數id,必須是具體微博的id,而不是uid?。?!
其他程序也是如此。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何獲取AccessToken以及如何使用新浪微博API的使用方式)
因為畢業(yè)項目需要用到微博數據采集,所以獲取微博數據的方式主要有兩種:基于官方API和基于網(wǎng)絡(luò )爬蟲(chóng)。讓我們看看這些天如何使用官方API。比較麻煩的是oauth2的驗證,今天看到一個(gè)帖子,實(shí)踐了一下API的使用方法,轉載過(guò)來(lái)看看。
轉載至:
使用新浪微博API的前提是在新浪微博開(kāi)放平臺上注冊一個(gè)應用,獲取App Key和App Secret,然后根據這兩個(gè)獲取Access Token。下面詳細介紹如何獲取Access Token以及如何使用新浪微博提供的API。
一、獲取訪(fǎng)問(wèn)令牌
1、進(jìn)入新浪微博開(kāi)放平臺,進(jìn)入應用開(kāi)發(fā),選擇創(chuàng )建應用,這里我選擇“web應用”
2、填寫(xiě)申請的基本信息
隨便填什么,點(diǎn)擊“創(chuàng )建”,就可以創(chuàng )建成功了!
創(chuàng )建成功后,可以查看應用信息。您需要的主要是 App Key 和 App Secret。
3、添加授權回調頁(yè)面
選擇剛剛創(chuàng )建的應用,進(jìn)入應用信息,選擇高級信息,添加授權回調頁(yè)面。
這必須添加。如果回調頁(yè)面沒(méi)有被授權,則無(wú)法獲取Access Token,必須保證回調頁(yè)面的URL是可訪(fǎng)問(wèn)的。
4、獲取新浪微博SDK包
在新浪微博開(kāi)放平臺,選擇文檔->資源下載->SDK下載,我選擇JavaSDK的版本。下載完成后,解壓并將項目導入Eclipse。
可以查看文檔:readme.txt,內容為:
[清楚的]
請先填寫(xiě)相關(guān)配置:在Config.properties中client_ID:appkey client_SERCRET:app_secret redirect_URI:回調地址
即需要配置運行項目的前提。
5、配置SDK開(kāi)發(fā)包
打開(kāi) Config.properties 文件(在 src 目錄中)
[清楚的]
client_ID= client_SERCRET= redirect_URI= baseURL= accessTokenURL= authorizeURL= rmURL=
您需要填寫(xiě)client_ID、client_SERCRET、redirect_URI,這些必須與您的應用程序相對應。格式與以下相同。不要放雙引號,不要在末尾放分號。
6、獲取訪(fǎng)問(wèn)令牌
打開(kāi)示例資源文件夾,weibo4j.examples.oauth2文件夾中的OAuth4Code.java
放上代碼:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code",args[1],args[2])); System.out.println(oauth.authorize("code",args[1],args[2]));
變成:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code","","")); System.out.println(oauth.authorize("code","",""));
即刪除 args 參數。
然后選擇run as Java Application,打開(kāi)瀏覽器,也就是打開(kāi)你填寫(xiě)的回調地址,注意此時(shí)的url,最后一部分是code=XXXXXXXXXXXXXXXXXXXXX。復制此代碼的值。查看 Eclipse 的控制臺窗口:
輸入您剛剛獲得的代碼值,然后按 Enter。
至此,您已經(jīng)獲得了access_token值和uid值,現在可以使用access_token運行示例中的程序了。注意access_token的取值有一定的時(shí)效性。access_token過(guò)期后需要重新申請,即重復第6步,access_token的值不會(huì )每次都改變。
二、運行示例程序
我在weibo4j.examples.timeline中選擇了ShowStatus.java。將access_token替換為剛剛獲取的值,id指的是微博的ID,運行它,可以得到微博的信息和用戶(hù)的信息。注意這里的第二個(gè)參數id,必須是具體微博的id,而不是uid?。?!
其他程序也是如此。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( 如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 82 次瀏覽 ? 2022-02-04 21:14
如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))
如何將推特信息自動(dòng)同步到新浪微博、開(kāi)心網(wǎng)、人人網(wǎng)等國內SNS網(wǎng)站,我之前介紹過(guò)一種同步方法。這種方法雖然可以實(shí)現同步功能,但是同步不是實(shí)時(shí)的。是的,時(shí)差約為一小時(shí)。這個(gè)時(shí)差是由 TwitterFeed 引起的。同時(shí),這種方法的設置比較復雜,需要多次翻轉。
于是,我開(kāi)始嘗試一種新的同步方式,開(kāi)發(fā)了一個(gè)Python程序,定時(shí)自動(dòng)讀取和同步推特信息,以簡(jiǎn)化同步過(guò)程,縮短同步時(shí)間,實(shí)現基本的實(shí)時(shí)同步功能。原來(lái)的同步流程圖是:twitter->appspot->twitterfeed->ping.fm->customurl->huotu->新浪微博,新的同步流程變成:twitter->appspot->huotu->新浪微博,步驟大大簡(jiǎn)化了,只需要在GAE上設置一個(gè)定時(shí)任務(wù)定時(shí)執行即可。
由于 GAE 支持 Cron Job 定時(shí)任務(wù),所以我們的 Python 程序可以每分鐘自動(dòng)調用一次。調用時(shí),先從推特上抓取用戶(hù)的最新消息,抓取成功后,將消息同步到地瓜火兔。然后分發(fā)到新浪微博、開(kāi)心網(wǎng)等,如果設置為每分鐘執行一次,同步時(shí)差只有一分鐘左右,基本實(shí)現了推特信息實(shí)時(shí)同步到新浪微博等SNS的功能網(wǎng)站。
我在GAE上調試了這個(gè)程序Python程序,不是很流暢。我按照官方說(shuō)明配置了 cron.yaml 文件,但是更新 Twitter.py 后,Cron Job 定時(shí)任務(wù)還是不行,后臺也看不到相關(guān)的 Cron。工作任務(wù)。
后來(lái)經(jīng)過(guò)一番研究,終于解決了GAE中Python中Cron Job調度任務(wù)的問(wèn)題。原因很簡(jiǎn)單,因為我的“Google App Engine SDK for Python”是很久以前安裝的,當時(shí)GAE不支持定時(shí)任務(wù),所以無(wú)法更新cron.yaml文件,重新下載最新版本后“Google App Engine SDK for Python”安裝后,Cron Job 計劃任務(wù)更新成功。
然而,新的問(wèn)題又來(lái)了。我發(fā)現當app調用Twitter API時(shí),失敗率非常高。幾乎有一半的情況下會(huì )提示“Rate limit exceeded. Clients may not make more than 150 requests per hour”,這讓我懷疑是不是GAE的外網(wǎng)IP很小,還有很多第三方程序在調用GAE 上的 Twitter API,導致每小時(shí)調用超過(guò) 150 次,否則,我自己的調用永遠不會(huì )有這么高的頻率,可能是因為 Twitter 沒(méi)有將 GAE IP 列入白名單,如果有一天 Twitter 不限制 GAE IP,有應該沒(méi)有問(wèn)題。
安裝說(shuō)明:
下載方法,使用TortoiseSVN查看這個(gè)SVN地址,然后,編輯app.yaml,修改為自己的appspot應用名稱(chēng),然后修改twitter.py文件最后一行,添加你的推特用戶(hù)名,喃喃火兔用戶(hù)名和密碼分別填寫(xiě),cron.yaml文件收錄定時(shí)任務(wù)設置,然后就可以按照本文方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼,就可以了發(fā)布。
發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于可以設置定時(shí)執行最少1分鐘,同步速度非???,基本可以達到即時(shí)自動(dòng)同步的效果。
() () 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))

如何將推特信息自動(dòng)同步到新浪微博、開(kāi)心網(wǎng)、人人網(wǎng)等國內SNS網(wǎng)站,我之前介紹過(guò)一種同步方法。這種方法雖然可以實(shí)現同步功能,但是同步不是實(shí)時(shí)的。是的,時(shí)差約為一小時(shí)。這個(gè)時(shí)差是由 TwitterFeed 引起的。同時(shí),這種方法的設置比較復雜,需要多次翻轉。
于是,我開(kāi)始嘗試一種新的同步方式,開(kāi)發(fā)了一個(gè)Python程序,定時(shí)自動(dòng)讀取和同步推特信息,以簡(jiǎn)化同步過(guò)程,縮短同步時(shí)間,實(shí)現基本的實(shí)時(shí)同步功能。原來(lái)的同步流程圖是:twitter->appspot->twitterfeed->ping.fm->customurl->huotu->新浪微博,新的同步流程變成:twitter->appspot->huotu->新浪微博,步驟大大簡(jiǎn)化了,只需要在GAE上設置一個(gè)定時(shí)任務(wù)定時(shí)執行即可。
由于 GAE 支持 Cron Job 定時(shí)任務(wù),所以我們的 Python 程序可以每分鐘自動(dòng)調用一次。調用時(shí),先從推特上抓取用戶(hù)的最新消息,抓取成功后,將消息同步到地瓜火兔。然后分發(fā)到新浪微博、開(kāi)心網(wǎng)等,如果設置為每分鐘執行一次,同步時(shí)差只有一分鐘左右,基本實(shí)現了推特信息實(shí)時(shí)同步到新浪微博等SNS的功能網(wǎng)站。
我在GAE上調試了這個(gè)程序Python程序,不是很流暢。我按照官方說(shuō)明配置了 cron.yaml 文件,但是更新 Twitter.py 后,Cron Job 定時(shí)任務(wù)還是不行,后臺也看不到相關(guān)的 Cron。工作任務(wù)。
后來(lái)經(jīng)過(guò)一番研究,終于解決了GAE中Python中Cron Job調度任務(wù)的問(wèn)題。原因很簡(jiǎn)單,因為我的“Google App Engine SDK for Python”是很久以前安裝的,當時(shí)GAE不支持定時(shí)任務(wù),所以無(wú)法更新cron.yaml文件,重新下載最新版本后“Google App Engine SDK for Python”安裝后,Cron Job 計劃任務(wù)更新成功。
然而,新的問(wèn)題又來(lái)了。我發(fā)現當app調用Twitter API時(shí),失敗率非常高。幾乎有一半的情況下會(huì )提示“Rate limit exceeded. Clients may not make more than 150 requests per hour”,這讓我懷疑是不是GAE的外網(wǎng)IP很小,還有很多第三方程序在調用GAE 上的 Twitter API,導致每小時(shí)調用超過(guò) 150 次,否則,我自己的調用永遠不會(huì )有這么高的頻率,可能是因為 Twitter 沒(méi)有將 GAE IP 列入白名單,如果有一天 Twitter 不限制 GAE IP,有應該沒(méi)有問(wèn)題。
安裝說(shuō)明:
下載方法,使用TortoiseSVN查看這個(gè)SVN地址,然后,編輯app.yaml,修改為自己的appspot應用名稱(chēng),然后修改twitter.py文件最后一行,添加你的推特用戶(hù)名,喃喃火兔用戶(hù)名和密碼分別填寫(xiě),cron.yaml文件收錄定時(shí)任務(wù)設置,然后就可以按照本文方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼,就可以了發(fā)布。
發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于可以設置定時(shí)執行最少1分鐘,同步速度非???,基本可以達到即時(shí)自動(dòng)同步的效果。

() ()
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(本次開(kāi)放微博渠道接口,不需要驗證網(wǎng)站地址。。)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 57 次瀏覽 ? 2022-02-02 17:05
此次開(kāi)通微博頻道界面,為廣大站長(cháng)提供了更便捷的申請方式。
不僅需要在管理后臺點(diǎn)擊應用,還可以將內容同步到微博,顯示來(lái)自自己網(wǎng)站。
無(wú)需等待開(kāi)放平臺審核,無(wú)需去微博開(kāi)放平臺申請,無(wú)需驗證網(wǎng)站地址。
新浪微博為您提供支持和開(kāi)放渠道接口,目前實(shí)現了以下功能。
發(fā)布更新文章,同時(shí)發(fā)布到微博時(shí),來(lái)源顯示為網(wǎng)站自定義的名稱(chēng),鏈接地址為本站自定義鏈接。它非常強大嗎?!
要實(shí)現這個(gè)功能,只需要簡(jiǎn)單的 3 個(gè)步驟:
【第一步】打開(kāi)管理后臺,進(jìn)入設置,滾動(dòng)至底部:設置新浪微博頻道AppKey。
【第二步】輸入站點(diǎn)名稱(chēng)和網(wǎng)站url:網(wǎng)站的名稱(chēng)將顯示為微博來(lái)源,不超過(guò)5個(gè)漢字,或10個(gè)英文/數字。url:點(diǎn)擊源后指向的網(wǎng)站網(wǎng)址,我們默認為您填寫(xiě)。
【第三步】授權此api:使用此時(shí)登錄的wp賬號對應的新浪微博賬號授權此api。
完畢!發(fā)帖文章來(lái)測試一下吧~
注意:
1. 微博默認會(huì )在站點(diǎn)名稱(chēng)后加一個(gè)_ds logo,這樣站點(diǎn)就不會(huì )和原微博注冊沖突了;
2. 僅對擁有授權微博賬號且在有效期內的用戶(hù),同步時(shí)會(huì )顯示來(lái)源;
3. 在內測期間,新浪微博只提供7天的授權,您可以在頁(yè)面更新授權。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(本次開(kāi)放微博渠道接口,不需要驗證網(wǎng)站地址。。)
此次開(kāi)通微博頻道界面,為廣大站長(cháng)提供了更便捷的申請方式。
不僅需要在管理后臺點(diǎn)擊應用,還可以將內容同步到微博,顯示來(lái)自自己網(wǎng)站。
無(wú)需等待開(kāi)放平臺審核,無(wú)需去微博開(kāi)放平臺申請,無(wú)需驗證網(wǎng)站地址。
新浪微博為您提供支持和開(kāi)放渠道接口,目前實(shí)現了以下功能。
發(fā)布更新文章,同時(shí)發(fā)布到微博時(shí),來(lái)源顯示為網(wǎng)站自定義的名稱(chēng),鏈接地址為本站自定義鏈接。它非常強大嗎?!
要實(shí)現這個(gè)功能,只需要簡(jiǎn)單的 3 個(gè)步驟:
【第一步】打開(kāi)管理后臺,進(jìn)入設置,滾動(dòng)至底部:設置新浪微博頻道AppKey。
【第二步】輸入站點(diǎn)名稱(chēng)和網(wǎng)站url:網(wǎng)站的名稱(chēng)將顯示為微博來(lái)源,不超過(guò)5個(gè)漢字,或10個(gè)英文/數字。url:點(diǎn)擊源后指向的網(wǎng)站網(wǎng)址,我們默認為您填寫(xiě)。
【第三步】授權此api:使用此時(shí)登錄的wp賬號對應的新浪微博賬號授權此api。
完畢!發(fā)帖文章來(lái)測試一下吧~
注意:
1. 微博默認會(huì )在站點(diǎn)名稱(chēng)后加一個(gè)_ds logo,這樣站點(diǎn)就不會(huì )和原微博注冊沖突了;
2. 僅對擁有授權微博賬號且在有效期內的用戶(hù),同步時(shí)會(huì )顯示來(lái)源;
3. 在內測期間,新浪微博只提供7天的授權,您可以在頁(yè)面更新授權。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何獲取AccessToken以及如何使用新浪微博API的使用方式)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 58 次瀏覽 ? 2022-02-01 17:18
因為畢業(yè)項目需要用到微博數據采集,所以獲取微博數據主要有兩種方式:基于官方API和基于網(wǎng)絡(luò )爬蟲(chóng),這幾天來(lái)看看官方API怎么用,比較麻煩是oauth2的驗證,今天看到一個(gè)帖子,實(shí)踐了一下API的使用方法,轉載過(guò)來(lái)看看。
轉載至:
使用新浪微博API的前提是在新浪微博開(kāi)放平臺上注冊一個(gè)應用,獲取App Key和App Secret,然后根據這兩個(gè)獲取Access Token。下面詳細介紹如何獲取Access Token以及如何使用新浪微博提供的API。
一、獲取訪(fǎng)問(wèn)令牌
1、進(jìn)入新浪微博開(kāi)放平臺,進(jìn)入應用開(kāi)發(fā),選擇創(chuàng )建應用,這里我選擇“web應用”
2、填寫(xiě)申請的基本信息
隨便填什么,點(diǎn)擊“創(chuàng )建”,就可以創(chuàng )建成功了!
創(chuàng )建成功后,可以查看應用信息。您需要的主要是 App Key 和 App Secret。
3、添加授權回調頁(yè)面
選擇剛剛創(chuàng )建的應用,進(jìn)入應用信息,選擇高級信息,添加授權回調頁(yè)面。
這必須添加。如果回調頁(yè)面沒(méi)有被授權,則無(wú)法獲取Access Token,必須保證回調頁(yè)面的URL是可訪(fǎng)問(wèn)的。
4、獲取新浪微博SDK包
在新浪微博開(kāi)放平臺,選擇文檔->資源下載->SDK下載,我選擇JavaSDK的版本。下載完成后,解壓并將項目導入Eclipse。
可以查看文檔:readme.txt,內容為:
[清楚的]
請先填寫(xiě)相關(guān)配置:在Config.properties中client_ID:appkey client_SERCRET:app_secret redirect_URI:回調地址
即需要配置運行項目的前提。
5、配置SDK開(kāi)發(fā)包
打開(kāi) Config.properties 文件(在 src 目錄中)
[清楚的]
client_ID= client_SERCRET= redirect_URI= baseURL= accessTokenURL= authorizeURL= rmURL=
您需要填寫(xiě)client_ID、client_SERCRET、redirect_URI,這些必須與您的應用程序相對應。格式與以下相同。不要放雙引號,不要在末尾放分號。
6、獲取訪(fǎng)問(wèn)令牌
打開(kāi)示例資源文件夾,weibo4j.examples.oauth2文件夾中的OAuth4Code.java
放上代碼:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code",args[1],args[2])); System.out.println(oauth.authorize("code",args[1],args[2]));
變成:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code","","")); System.out.println(oauth.authorize("code","",""));
即刪除 args 參數。
然后選擇run as Java Application,打開(kāi)瀏覽器,也就是打開(kāi)你填寫(xiě)的回調地址,注意此時(shí)的url,最后一部分是code=XXXXXXXXXXXXXXXXXXXXX。復制此代碼的值。查看 Eclipse 的控制臺窗口:
輸入您剛剛獲得的代碼值,然后按 Enter。
至此,您已經(jīng)獲得了access_token值和uid值,現在可以使用access_token運行示例中的程序了。注意access_token的取值有一定的時(shí)效性。access_token過(guò)期后需要重新申請,即重復第6步,access_token的值不會(huì )每次都改變。
二、運行示例程序
我在weibo4j.examples.timeline中選擇了ShowStatus.java。將access_token替換為剛剛獲取的值,id指的是微博的ID,運行它,可以得到微博的信息和用戶(hù)的信息。注意這里的第二個(gè)參數id,必須是具體微博的id,而不是uid?。?!
其他程序也是如此。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何獲取AccessToken以及如何使用新浪微博API的使用方式)
因為畢業(yè)項目需要用到微博數據采集,所以獲取微博數據主要有兩種方式:基于官方API和基于網(wǎng)絡(luò )爬蟲(chóng),這幾天來(lái)看看官方API怎么用,比較麻煩是oauth2的驗證,今天看到一個(gè)帖子,實(shí)踐了一下API的使用方法,轉載過(guò)來(lái)看看。
轉載至:
使用新浪微博API的前提是在新浪微博開(kāi)放平臺上注冊一個(gè)應用,獲取App Key和App Secret,然后根據這兩個(gè)獲取Access Token。下面詳細介紹如何獲取Access Token以及如何使用新浪微博提供的API。
一、獲取訪(fǎng)問(wèn)令牌
1、進(jìn)入新浪微博開(kāi)放平臺,進(jìn)入應用開(kāi)發(fā),選擇創(chuàng )建應用,這里我選擇“web應用”
2、填寫(xiě)申請的基本信息
隨便填什么,點(diǎn)擊“創(chuàng )建”,就可以創(chuàng )建成功了!
創(chuàng )建成功后,可以查看應用信息。您需要的主要是 App Key 和 App Secret。
3、添加授權回調頁(yè)面
選擇剛剛創(chuàng )建的應用,進(jìn)入應用信息,選擇高級信息,添加授權回調頁(yè)面。
這必須添加。如果回調頁(yè)面沒(méi)有被授權,則無(wú)法獲取Access Token,必須保證回調頁(yè)面的URL是可訪(fǎng)問(wèn)的。
4、獲取新浪微博SDK包
在新浪微博開(kāi)放平臺,選擇文檔->資源下載->SDK下載,我選擇JavaSDK的版本。下載完成后,解壓并將項目導入Eclipse。
可以查看文檔:readme.txt,內容為:
[清楚的]
請先填寫(xiě)相關(guān)配置:在Config.properties中client_ID:appkey client_SERCRET:app_secret redirect_URI:回調地址
即需要配置運行項目的前提。
5、配置SDK開(kāi)發(fā)包
打開(kāi) Config.properties 文件(在 src 目錄中)
[清楚的]
client_ID= client_SERCRET= redirect_URI= baseURL= accessTokenURL= authorizeURL= rmURL=
您需要填寫(xiě)client_ID、client_SERCRET、redirect_URI,這些必須與您的應用程序相對應。格式與以下相同。不要放雙引號,不要在末尾放分號。
6、獲取訪(fǎng)問(wèn)令牌
打開(kāi)示例資源文件夾,weibo4j.examples.oauth2文件夾中的OAuth4Code.java
放上代碼:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code",args[1],args[2])); System.out.println(oauth.authorize("code",args[1],args[2]));
變成:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code","","")); System.out.println(oauth.authorize("code","",""));
即刪除 args 參數。
然后選擇run as Java Application,打開(kāi)瀏覽器,也就是打開(kāi)你填寫(xiě)的回調地址,注意此時(shí)的url,最后一部分是code=XXXXXXXXXXXXXXXXXXXXX。復制此代碼的值。查看 Eclipse 的控制臺窗口:
輸入您剛剛獲得的代碼值,然后按 Enter。
至此,您已經(jīng)獲得了access_token值和uid值,現在可以使用access_token運行示例中的程序了。注意access_token的取值有一定的時(shí)效性。access_token過(guò)期后需要重新申請,即重復第6步,access_token的值不會(huì )每次都改變。
二、運行示例程序
我在weibo4j.examples.timeline中選擇了ShowStatus.java。將access_token替換為剛剛獲取的值,id指的是微博的ID,運行它,可以得到微博的信息和用戶(hù)的信息。注意這里的第二個(gè)參數id,必須是具體微博的id,而不是uid?。?!
其他程序也是如此。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( +python模擬登陸新浪微博(2):)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 63 次瀏覽 ? 2022-02-01 17:07
+python模擬登陸新浪微博(2):)
上次準備用selenium + python模擬登陸新浪微博(這個(gè)方法太爛了)。最后我卡在了驗證碼鏈接。對于我這樣的菜鳥(niǎo),新浪太不友好了。完全沒(méi)有考慮到我的感受。附上模擬登錄代碼。
問(wèn)題出在獲取驗證碼圖片的環(huán)節,這里新浪不知道怎么弄。地址是一樣的,但是每次訪(fǎng)問(wèn)得到的驗證碼都不一樣,所以無(wú)法得到正確的驗證碼。本來(lái)打算用selenium截圖獲取驗證碼,交給百度獸人鑒定。我發(fā)現百度的新浪驗證碼識別準確率低的可怕。
所以,我放棄了。請改用官方提供的正確做法。這樣你就不會(huì )被封號了。還是很不錯的。官方 API 基本上是一個(gè) rest 接口。它可以很容易地調用和獲取。主要寫(xiě)在下面。如何成功獲得授權。授權完成后,可以調用新浪接口獲取數據(公開(kāi)、公平)。
官方的Api相當豐富。我主要用他們的評論,也用搜索界面。所以我認為它是完美的。
首先,要訪(fǎng)問(wèn)這些東西,你需要有一個(gè)新浪帳號。然后點(diǎn)擊:“微連接”創(chuàng )建應用程序。
創(chuàng )建完成后。您可以在“我的應用程序”中找到它:
點(diǎn)擊應用進(jìn)入后,可以看到應用的app key和App Secret。這兩個(gè)很重要,后面會(huì )用到授權。
獲得授權。這里新浪使用了一種授權機制,叫做:OAuth2.0:簡(jiǎn)單來(lái)說(shuō)就是你訪(fǎng)問(wèn)授權服務(wù)器,授權服務(wù)器給你返回一個(gè)證書(shū),然后你就可以用這個(gè)證書(shū)訪(fǎng)問(wèn)新浪的其他接口。
授權服務(wù)器相當于門(mén)衛的意思。你來(lái)到一座建筑。然后門(mén)衛給了一張身份證。之后,您進(jìn)入大樓。每次進(jìn)入房間。門(mén)口的守衛都要求你提供剛進(jìn)樓的人給你的身份證。否則,您將被拒絕入境。大概就是這個(gè)意思。
長(cháng)話(huà)短說(shuō),直接看如何獲取授權:
授權需要自己配置回調地址。需要訪(fǎng)問(wèn)。除了在參數中添加這個(gè)地址外,還需要在你的應用程序中寫(xiě)入。那是:
這里。我直接用 Flask 搭建了一個(gè)本地服務(wù)器:
然后使用內網(wǎng)穿透軟件。免費的是:natapp:
滲透出來(lái)。這樣我們就有了回調的地址。
接下來(lái)看官方API:
首先我們需要訪(fǎng)問(wèn):
這需要我們填寫(xiě)之前佩戴應用后獲取的app key和我們構建的接受回調的地址:
然后在瀏覽器中打開(kāi)這個(gè)地址:
點(diǎn)擊Authorize(我的回調函數寫(xiě)的打印代碼,所以這里直接打印代碼,地址欄也可以拿到這個(gè)代碼):
之后,我們使用新浪給出的第二個(gè)url:
此 url 需要使用 post 方法提交。
代碼也有自己的應用密鑰和應用秘密。
填寫(xiě)后提交:
您將獲得 json 格式的返回:
{“access_token”:“asdasdasdadasdasdsadda”,“remind_in”:“1233566966”,“expires_in”:1233566966,“uid”:“”,“isRealName”:“true”}
這就是我們最終的結果。代表我們授權成功。
然后訪(fǎng)問(wèn)界面很容易。我們只保存 access_token。每次訪(fǎng)問(wèn)調用界面時(shí)都可以帶上這個(gè)。
接口測試可以使用谷歌的postman,或者新浪提供的測試工具
新浪提供了一個(gè)接口測試工具,可以直接在線(xiàn)測試接口:這里我從之前爬過(guò)的微博列表中選擇了一個(gè)ID為文章。請求后得到新浪返回的評論結果的json字符串。
大概一目了然(一萬(wàn)多行的字符串): 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
+python模擬登陸新浪微博(2):)
上次準備用selenium + python模擬登陸新浪微博(這個(gè)方法太爛了)。最后我卡在了驗證碼鏈接。對于我這樣的菜鳥(niǎo),新浪太不友好了。完全沒(méi)有考慮到我的感受。附上模擬登錄代碼。
問(wèn)題出在獲取驗證碼圖片的環(huán)節,這里新浪不知道怎么弄。地址是一樣的,但是每次訪(fǎng)問(wèn)得到的驗證碼都不一樣,所以無(wú)法得到正確的驗證碼。本來(lái)打算用selenium截圖獲取驗證碼,交給百度獸人鑒定。我發(fā)現百度的新浪驗證碼識別準確率低的可怕。
所以,我放棄了。請改用官方提供的正確做法。這樣你就不會(huì )被封號了。還是很不錯的。官方 API 基本上是一個(gè) rest 接口。它可以很容易地調用和獲取。主要寫(xiě)在下面。如何成功獲得授權。授權完成后,可以調用新浪接口獲取數據(公開(kāi)、公平)。
官方的Api相當豐富。我主要用他們的評論,也用搜索界面。所以我認為它是完美的。
首先,要訪(fǎng)問(wèn)這些東西,你需要有一個(gè)新浪帳號。然后點(diǎn)擊:“微連接”創(chuàng )建應用程序。
創(chuàng )建完成后。您可以在“我的應用程序”中找到它:
點(diǎn)擊應用進(jìn)入后,可以看到應用的app key和App Secret。這兩個(gè)很重要,后面會(huì )用到授權。
獲得授權。這里新浪使用了一種授權機制,叫做:OAuth2.0:簡(jiǎn)單來(lái)說(shuō)就是你訪(fǎng)問(wèn)授權服務(wù)器,授權服務(wù)器給你返回一個(gè)證書(shū),然后你就可以用這個(gè)證書(shū)訪(fǎng)問(wèn)新浪的其他接口。
授權服務(wù)器相當于門(mén)衛的意思。你來(lái)到一座建筑。然后門(mén)衛給了一張身份證。之后,您進(jìn)入大樓。每次進(jìn)入房間。門(mén)口的守衛都要求你提供剛進(jìn)樓的人給你的身份證。否則,您將被拒絕入境。大概就是這個(gè)意思。
長(cháng)話(huà)短說(shuō),直接看如何獲取授權:
授權需要自己配置回調地址。需要訪(fǎng)問(wèn)。除了在參數中添加這個(gè)地址外,還需要在你的應用程序中寫(xiě)入。那是:
這里。我直接用 Flask 搭建了一個(gè)本地服務(wù)器:
然后使用內網(wǎng)穿透軟件。免費的是:natapp:
滲透出來(lái)。這樣我們就有了回調的地址。
接下來(lái)看官方API:
首先我們需要訪(fǎng)問(wèn):
這需要我們填寫(xiě)之前佩戴應用后獲取的app key和我們構建的接受回調的地址:
然后在瀏覽器中打開(kāi)這個(gè)地址:
點(diǎn)擊Authorize(我的回調函數寫(xiě)的打印代碼,所以這里直接打印代碼,地址欄也可以拿到這個(gè)代碼):
之后,我們使用新浪給出的第二個(gè)url:
此 url 需要使用 post 方法提交。
代碼也有自己的應用密鑰和應用秘密。
填寫(xiě)后提交:
您將獲得 json 格式的返回:
{“access_token”:“asdasdasdadasdasdsadda”,“remind_in”:“1233566966”,“expires_in”:1233566966,“uid”:“”,“isRealName”:“true”}
這就是我們最終的結果。代表我們授權成功。
然后訪(fǎng)問(wèn)界面很容易。我們只保存 access_token。每次訪(fǎng)問(wèn)調用界面時(shí)都可以帶上這個(gè)。
接口測試可以使用谷歌的postman,或者新浪提供的測試工具
新浪提供了一個(gè)接口測試工具,可以直接在線(xiàn)測試接口:這里我從之前爬過(guò)的微博列表中選擇了一個(gè)ID為文章。請求后得到新浪返回的評論結果的json字符串。
大概一目了然(一萬(wàn)多行的字符串):
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博API開(kāi)發(fā)的資源比較多,一個(gè)開(kāi)發(fā)者下載地址)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 59 次瀏覽 ? 2022-02-01 06:04
現在玩微博的人越來(lái)越多,關(guān)于微博的第三方應用開(kāi)??發(fā)也越來(lái)越多。一不小心接觸到新浪微博API開(kāi)發(fā)。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺,網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。
在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但是還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的使用PHP開(kāi)發(fā)新浪微博API。內容組織和解釋?zhuān)?br /> 新浪微博API開(kāi)發(fā)準備
首先,去新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
下載完成后,放到自己的開(kāi)發(fā)環(huán)境中,解壓。演示程序也收錄在其中。我們可以參考它的示例程序來(lái)編寫(xiě)。
新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用程序使用 OAuth 授權。新浪微博開(kāi)放平臺對OAuth授權流程有清晰完整的介紹。大家可以去查一下,我會(huì )從例子開(kāi)發(fā)的角度來(lái)介紹和講解。
1.先獲取一個(gè)未授權的Request Token
$o = new WeiboOAuth( WB_AKEY , WB_SKEY );
$keys = $o->getRequestToken();
//echo($keys['oauth_token'].' : '.$keys['oauth_token_secret']);
我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
獲取到授權值后,我們就可以使用上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )存儲在$key數組變量中。
2.然后請求用戶(hù)授權Token
$_SESSION['keys'] = $keys;
aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false , '#39;);
拿到未授權的Request Token值后,我們就可以使用上面的代碼開(kāi)始準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到頁(yè)面。授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后,會(huì )自動(dòng)跳轉回你在最后一個(gè)參數中設置的回調頁(yè)面:你可以將此鏈接設置為上一頁(yè),這樣授權完成后,會(huì )再次自動(dòng)跳轉回來(lái)。
需要注意的是,需要設置會(huì )話(huà)密鑰的值,這是獲取下面授權的Access Token所必需的。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯,一般是這個(gè)問(wèn)題。你沒(méi)有設置 session keys 的值,當然下面無(wú)法獲取 Access Token 的值。必須記住這一點(diǎn)。
3.用戶(hù)最后授權的Access Token
$o = new WeiboOAuth( WB_AKEY ,
WB_SKEY ,
$_SESSION['keys']['oauth_token'] ,
$_SESSION['keys']['oauth_token_secret'] );
$last_key = $o->getAccessToken( $_REQUEST['oauth_verifier'] ) ;
回聲($last_key['oauth_token']);
上述代碼最終得到用戶(hù)授權的Access Token,一共有兩個(gè)值,存放在$last_key數組變量中。我們還可以看到,最后兩個(gè)參數是我們之前設置的會(huì )話(huà)值。至此基本完成,這就是一個(gè)完整的新浪微博用戶(hù)授權流程。
授權完成后工作
授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里簡(jiǎn)單介紹一下獲取最新微博記錄的接口,其他類(lèi)似。
獲取新浪微博最新信息的API接口函數為:public_timeline()。示例代碼如下:
//獲取前20條最新更新的公眾微博消息
$c = new WeiboClient( WB_AKEY ,
WB_SKEY ,
$oauth_token ,
$oauth_token_secret );
$msg = $c->public_timeline();
if ($msg === false || $msg === null){
echo "發(fā)生錯誤";
返回假;
}
if (isset($msg['error_code']) && isset($msg['error'])){
echo ('Error_code: '.$msg['error_code'].'; 錯誤: '.$msg['error'] );
返回假;
}
print_r($msg);
通常我們拿到用戶(hù)授權的Access Token值后,保存在我們的用戶(hù)表中,對應我們應用中的賬號。之后,我們就不需要每次都去新浪微博的各個(gè)api接口了。認證。
上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里使用php進(jìn)行開(kāi)發(fā),所以使用Json格式數據有先天優(yōu)勢。如果返回Json格式數據,直接使用php函數json_decode()可以轉換成php常用的數組格式。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博API開(kāi)發(fā)的資源比較多,一個(gè)開(kāi)發(fā)者下載地址)
現在玩微博的人越來(lái)越多,關(guān)于微博的第三方應用開(kāi)??發(fā)也越來(lái)越多。一不小心接觸到新浪微博API開(kāi)發(fā)。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺,網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。
在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但是還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的使用PHP開(kāi)發(fā)新浪微博API。內容組織和解釋?zhuān)?br /> 新浪微博API開(kāi)發(fā)準備
首先,去新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
下載完成后,放到自己的開(kāi)發(fā)環(huán)境中,解壓。演示程序也收錄在其中。我們可以參考它的示例程序來(lái)編寫(xiě)。
新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用程序使用 OAuth 授權。新浪微博開(kāi)放平臺對OAuth授權流程有清晰完整的介紹。大家可以去查一下,我會(huì )從例子開(kāi)發(fā)的角度來(lái)介紹和講解。
1.先獲取一個(gè)未授權的Request Token
$o = new WeiboOAuth( WB_AKEY , WB_SKEY );
$keys = $o->getRequestToken();
//echo($keys['oauth_token'].' : '.$keys['oauth_token_secret']);
我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
獲取到授權值后,我們就可以使用上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )存儲在$key數組變量中。
2.然后請求用戶(hù)授權Token
$_SESSION['keys'] = $keys;
aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false , '#39;);
拿到未授權的Request Token值后,我們就可以使用上面的代碼開(kāi)始準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到頁(yè)面。授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后,會(huì )自動(dòng)跳轉回你在最后一個(gè)參數中設置的回調頁(yè)面:你可以將此鏈接設置為上一頁(yè),這樣授權完成后,會(huì )再次自動(dòng)跳轉回來(lái)。
需要注意的是,需要設置會(huì )話(huà)密鑰的值,這是獲取下面授權的Access Token所必需的。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯,一般是這個(gè)問(wèn)題。你沒(méi)有設置 session keys 的值,當然下面無(wú)法獲取 Access Token 的值。必須記住這一點(diǎn)。
3.用戶(hù)最后授權的Access Token
$o = new WeiboOAuth( WB_AKEY ,
WB_SKEY ,
$_SESSION['keys']['oauth_token'] ,
$_SESSION['keys']['oauth_token_secret'] );
$last_key = $o->getAccessToken( $_REQUEST['oauth_verifier'] ) ;
回聲($last_key['oauth_token']);
上述代碼最終得到用戶(hù)授權的Access Token,一共有兩個(gè)值,存放在$last_key數組變量中。我們還可以看到,最后兩個(gè)參數是我們之前設置的會(huì )話(huà)值。至此基本完成,這就是一個(gè)完整的新浪微博用戶(hù)授權流程。
授權完成后工作
授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里簡(jiǎn)單介紹一下獲取最新微博記錄的接口,其他類(lèi)似。
獲取新浪微博最新信息的API接口函數為:public_timeline()。示例代碼如下:
//獲取前20條最新更新的公眾微博消息
$c = new WeiboClient( WB_AKEY ,
WB_SKEY ,
$oauth_token ,
$oauth_token_secret );
$msg = $c->public_timeline();
if ($msg === false || $msg === null){
echo "發(fā)生錯誤";
返回假;
}
if (isset($msg['error_code']) && isset($msg['error'])){
echo ('Error_code: '.$msg['error_code'].'; 錯誤: '.$msg['error'] );
返回假;
}
print_r($msg);
通常我們拿到用戶(hù)授權的Access Token值后,保存在我們的用戶(hù)表中,對應我們應用中的賬號。之后,我們就不需要每次都去新浪微博的各個(gè)api接口了。認證。
上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里使用php進(jìn)行開(kāi)發(fā),所以使用Json格式數據有先天優(yōu)勢。如果返回Json格式數據,直接使用php函數json_decode()可以轉換成php常用的數組格式。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( 使用GAE的程序同步程序有一些優(yōu)勢(1)_光明網(wǎng)(組圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 57 次瀏覽 ? 2022-01-29 21:05
使用GAE的程序同步程序有一些優(yōu)勢(1)_光明網(wǎng)(組圖))
從去年開(kāi)始,微博逐漸取代博客和SNS,成為最流行的互聯(lián)網(wǎng)應用之一。Twitter、新浪微博、地谷、9911等都非常受歡迎。許多人在各種微博平臺上注冊了賬號。但是這里又出現了一個(gè)新的問(wèn)題,那就是信息同步。
每個(gè)人的使用習慣不同,每個(gè)微博圈的用戶(hù)也不同。許多微博用戶(hù)都有一些人在每個(gè)平臺上關(guān)注和關(guān)注。因此,需要使用同步程序來(lái)統一各個(gè)平臺的信息。處理,還有這個(gè)處理中心,我覺(jué)得應該是推特。
推特的優(yōu)勢
使用 Twitter 作為微博中心的原因是有很多方法和工具可以更新 Twitter,您也可以使用 TwitterFeed 或 FeedBurner 從 RSS 提要直接更新 Twitter。Twitter本身也是全球最大的微博平臺。在可預見(jiàn)的未來(lái)不會(huì )消失,用戶(hù)發(fā)布的信息通常不會(huì )丟失或刪除。Twitter信息的備份和導出方法有很多種,所以把信息放到Twitter上吧。相對安全、穩妥、穩定。
將 Twitter 同步到其他微博的方法是使用 GAE。GAE 是谷歌提供的一個(gè)非常好的免費托管平臺。它具有很好的穩定性和強大的功能。它支持 Cron Job 調度任務(wù)。因此,我們只需要部署在 GAE 上。定時(shí)任務(wù),設置每分鐘抓取一次用戶(hù)推特信息,抓取成功后將最新消息直接發(fā)布到新浪微博等平臺,實(shí)現推特信息實(shí)時(shí)同步到各微博網(wǎng)站功能。
同步器的優(yōu)點(diǎn)
這個(gè)同步程序有一些優(yōu)點(diǎn)。與我之前介紹的微博同步相比,該程序在安全性、穩定性、速度和靈活性方面具有巨大的優(yōu)勢。
在安全方面,那些第三方網(wǎng)站會(huì )保存你的微博密碼進(jìn)行同步,這會(huì )給你的微博賬號帶來(lái)潛在的安全問(wèn)題。此外,保存你擁有的數千個(gè)粉絲的賬號密碼在那些同步網(wǎng)站中,你放心嗎?使用GAE的程序同步,只有你知道密碼。我們不應該擔心 GAE 被黑客入侵。
穩定性方面,我用了這個(gè)同步程序好幾個(gè)月了,幾乎沒(méi)有信息丟失。GAE服務(wù)本身的性能也很穩定,停機時(shí)間很少。
在速度方面,這個(gè)同步程序最快可以在1分鐘內同步所有信息,很少有網(wǎng)站能提供這樣的同步速度。
在靈活性方面,我們可以自己修改代碼來(lái)實(shí)現一些自定義的特殊功能。比如在這個(gè)程序中,我已經(jīng)定義了收錄@的信息是不同步的。我們也可以自己修改程序來(lái)實(shí)現很多其他的功能。
目前該同步程序支持推特同步新浪微博、地谷、9911、Dosha、人見(jiàn)網(wǎng)、follow5、6條微博,以及Ping.fm和Hellotxt兩個(gè)同步服務(wù)。同步流程圖如下所示。
主要在其他微博
如果用戶(hù)不打算使用Twitter作為主源,也可以使用這個(gè)程序進(jìn)行同步,先注冊一個(gè)Twitter賬號,然后找到用戶(hù)主微博的RSS Feed地址,使用TwitterFeed或者FeedBurner同步這個(gè)feed到Twitter,然后用這個(gè)程序來(lái)以后同步。如果新浪微博以后支持RSS Feed,可以通過(guò)這種方式將新浪微博的信息同步到其他微博。
應用安裝部署方法
下載方法,使用TortoiseSVN查看SVN地址,然后編輯app.yaml,修改為自己的appspot應用名稱(chēng),然后修改Twitter.py文件最后一行,填寫(xiě)你的Twitter用戶(hù)名,修改from ret = For send_sina_msgs("username","password",text)語(yǔ)句開(kāi)頭的用戶(hù)名和密碼,分別填寫(xiě)對應微博的用戶(hù)名和密碼。請使用# 注釋掉不需要同步的服務(wù)。cron.yaml文件是計劃任務(wù)設置,然后就可以按照本文的方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼,就可以發(fā)布了。
發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于可以設置定時(shí)執行最少1分鐘,同步速度非???,基本可以達到即時(shí)自動(dòng)同步的效果。
其他注意事項
Follow5 需要 api_key 來(lái)同步。目前,我的 api_key 放在程序中。建議使用follow5的用戶(hù)單獨申請一個(gè)api_key,防止我的api_key被使用。人建網(wǎng)需要邀請碼才能注冊使用。點(diǎn)擊此處獲取邀請鏈接。Ping.fm 和 Hellotxt 使用密鑰進(jìn)行身份驗證。有關(guān)詳細信息,請參閱此處。
() () 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
使用GAE的程序同步程序有一些優(yōu)勢(1)_光明網(wǎng)(組圖))

從去年開(kāi)始,微博逐漸取代博客和SNS,成為最流行的互聯(lián)網(wǎng)應用之一。Twitter、新浪微博、地谷、9911等都非常受歡迎。許多人在各種微博平臺上注冊了賬號。但是這里又出現了一個(gè)新的問(wèn)題,那就是信息同步。
每個(gè)人的使用習慣不同,每個(gè)微博圈的用戶(hù)也不同。許多微博用戶(hù)都有一些人在每個(gè)平臺上關(guān)注和關(guān)注。因此,需要使用同步程序來(lái)統一各個(gè)平臺的信息。處理,還有這個(gè)處理中心,我覺(jué)得應該是推特。
推特的優(yōu)勢
使用 Twitter 作為微博中心的原因是有很多方法和工具可以更新 Twitter,您也可以使用 TwitterFeed 或 FeedBurner 從 RSS 提要直接更新 Twitter。Twitter本身也是全球最大的微博平臺。在可預見(jiàn)的未來(lái)不會(huì )消失,用戶(hù)發(fā)布的信息通常不會(huì )丟失或刪除。Twitter信息的備份和導出方法有很多種,所以把信息放到Twitter上吧。相對安全、穩妥、穩定。
將 Twitter 同步到其他微博的方法是使用 GAE。GAE 是谷歌提供的一個(gè)非常好的免費托管平臺。它具有很好的穩定性和強大的功能。它支持 Cron Job 調度任務(wù)。因此,我們只需要部署在 GAE 上。定時(shí)任務(wù),設置每分鐘抓取一次用戶(hù)推特信息,抓取成功后將最新消息直接發(fā)布到新浪微博等平臺,實(shí)現推特信息實(shí)時(shí)同步到各微博網(wǎng)站功能。
同步器的優(yōu)點(diǎn)
這個(gè)同步程序有一些優(yōu)點(diǎn)。與我之前介紹的微博同步相比,該程序在安全性、穩定性、速度和靈活性方面具有巨大的優(yōu)勢。
在安全方面,那些第三方網(wǎng)站會(huì )保存你的微博密碼進(jìn)行同步,這會(huì )給你的微博賬號帶來(lái)潛在的安全問(wèn)題。此外,保存你擁有的數千個(gè)粉絲的賬號密碼在那些同步網(wǎng)站中,你放心嗎?使用GAE的程序同步,只有你知道密碼。我們不應該擔心 GAE 被黑客入侵。
穩定性方面,我用了這個(gè)同步程序好幾個(gè)月了,幾乎沒(méi)有信息丟失。GAE服務(wù)本身的性能也很穩定,停機時(shí)間很少。
在速度方面,這個(gè)同步程序最快可以在1分鐘內同步所有信息,很少有網(wǎng)站能提供這樣的同步速度。
在靈活性方面,我們可以自己修改代碼來(lái)實(shí)現一些自定義的特殊功能。比如在這個(gè)程序中,我已經(jīng)定義了收錄@的信息是不同步的。我們也可以自己修改程序來(lái)實(shí)現很多其他的功能。
目前該同步程序支持推特同步新浪微博、地谷、9911、Dosha、人見(jiàn)網(wǎng)、follow5、6條微博,以及Ping.fm和Hellotxt兩個(gè)同步服務(wù)。同步流程圖如下所示。

主要在其他微博
如果用戶(hù)不打算使用Twitter作為主源,也可以使用這個(gè)程序進(jìn)行同步,先注冊一個(gè)Twitter賬號,然后找到用戶(hù)主微博的RSS Feed地址,使用TwitterFeed或者FeedBurner同步這個(gè)feed到Twitter,然后用這個(gè)程序來(lái)以后同步。如果新浪微博以后支持RSS Feed,可以通過(guò)這種方式將新浪微博的信息同步到其他微博。
應用安裝部署方法
下載方法,使用TortoiseSVN查看SVN地址,然后編輯app.yaml,修改為自己的appspot應用名稱(chēng),然后修改Twitter.py文件最后一行,填寫(xiě)你的Twitter用戶(hù)名,修改from ret = For send_sina_msgs("username","password",text)語(yǔ)句開(kāi)頭的用戶(hù)名和密碼,分別填寫(xiě)對應微博的用戶(hù)名和密碼。請使用# 注釋掉不需要同步的服務(wù)。cron.yaml文件是計劃任務(wù)設置,然后就可以按照本文的方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼,就可以發(fā)布了。
發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于可以設置定時(shí)執行最少1分鐘,同步速度非???,基本可以達到即時(shí)自動(dòng)同步的效果。
其他注意事項
Follow5 需要 api_key 來(lái)同步。目前,我的 api_key 放在程序中。建議使用follow5的用戶(hù)單獨申請一個(gè)api_key,防止我的api_key被使用。人建網(wǎng)需要邀請碼才能注冊使用。點(diǎn)擊此處獲取邀請鏈接。Ping.fm 和 Hellotxt 使用密鑰進(jìn)行身份驗證。有關(guān)詳細信息,請參閱此處。

() ()
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何調用微博API爬單條微博的評論呢?(組圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 63 次瀏覽 ? 2022-01-29 17:24
當我沉浸在學(xué)習mysql、scrapy、django準備下一波吹水的時(shí)候,有人說(shuō),你可以爬下老薛的微博,蹭個(gè)熱點(diǎn),這讓勤奮(mo)很難( mo) learning (kou) xi (jia) 我停止發(fā)幾個(gè)代碼了。
然后趕緊關(guān)注了最近關(guān)于老薛的新聞……感受了劇情的復雜和案件的撲朔迷離……我默默的學(xué)會(huì )了看合同……怎么用ELA分析圖片……論文怎么寫(xiě)……怎么查別人的銀行對賬單……一點(diǎn)小知識……讓我慢一點(diǎn)……
所以,這次的主題是分析老薛最新的微博評論,分析評論粉絲的心情,聽(tīng)我說(shuō)。
1.新浪微博API
在經(jīng)歷了幾次(非常痛苦的)爬蟲(chóng)禁令后,我學(xué)會(huì )了在爬 網(wǎng)站 之前檢查 API 的“好”習慣。新浪作為大公司,怎么可能不推出新浪微博API?新浪有自己的開(kāi)發(fā)者開(kāi)放平臺。我們就不講python調用微博API的方法了。以下是登錄App_key和App_secret訪(fǎng)問(wèn)微博。API的代碼,代碼基于Python2。Python3 使用 weibo 模塊存在一定的問(wèn)題。
既然知道了如何登錄API,那么如何調用API爬取一條微博評論呢?一行代碼就可以做到。
r = ments.show.get(id = 41509,count = 200,page = 1)
一條微博的所有評論信息都在ments中。這里我們需要對比一下微博API文檔。微博API中說(shuō)調用微博評論API需要用戶(hù)授權,但是捏~只要知道單條微博的id,就可以調用這個(gè)API后,再講如何獲取單條微博的id(小聲點(diǎn),別讓微博知道,萬(wàn)一發(fā)了)。
以client.interface name.get(request parameter)的方式獲取API。獲取API后,您可以在接口詳情中查看規格。文檔中有返回結果的示例。
關(guān)鍵數據的json接口名稱(chēng)也在文檔中給出。
如果我們想獲取微博評論的內容,只需要調用文本接口即可
對于 st inments:
文本 = st.text
2.微博爬蟲(chóng)
通過(guò)調用新浪微博API,我們可以簡(jiǎn)單的獲取單條微博的評論信息。為什么簡(jiǎn)單,因為流行的信息很昂貴!你以為大V的微博只是免費給你API調用嗎?未經(jīng)認證的應用程序開(kāi)發(fā)人員每天只能請求數千次 API。這對于老薛這種單條微博評論幾十萬(wàn)的大V來(lái)說(shuō),是個(gè)大問(wèn)題。說(shuō)...太少(TT)
所以捏,還是要寫(xiě)微博爬蟲(chóng)。
俗話(huà)說(shuō),知己知彼,百戰不殆。作為一家大公司,新浪一定經(jīng)歷了數百場(chǎng)戰斗。它一定經(jīng)歷過(guò)無(wú)數次爬蟲(chóng)與反爬蟲(chóng)的戰爭,一定有完善的反爬蟲(chóng)策略。俗話(huà)說(shuō),面對強敵,繞道而行。一個(gè)老板說(shuō)的好,爬網(wǎng)站,先爬移動(dòng)端
登錄微博后,去老薛的微博回應P圖事件,_(:зゝ∠)_老薛,怪我,怪我來(lái)不及,點(diǎn)進(jìn)去的時(shí)候已經(jīng)有70w+評論了(截至發(fā)文當天已有100w+評論),靜謐的微博下,可見(jiàn)粉絲的不安之心……
移動(dòng)端微博的URL簡(jiǎn)潔明了,不像PC端的邏輯那么復雜不清楚:
從xhr文件我們可以知道,熱門(mén)評論的變化規律是:
';id=' + 單條微博id + '&type=comment&hot=1&page=' + 頁(yè)碼
最新評論的變化規律是:
'' + 單個(gè)微博id + '&page=' + 頁(yè)碼
打開(kāi)可以看到熱門(mén)評論的json文件。
接下來(lái)就是套路,偽裝瀏覽器頭,讀取json文件,遍歷每一頁(yè)……這不是重點(diǎn)!而這些我之前都講過(guò)~直接上代碼~這里是Python3的代碼~
這里有幾點(diǎn)注意事項:
設置爬取間隔后,微博爬蟲(chóng)被封禁的概率大大降低(尤其是晚上)
新浪每次返回的json數據個(gè)數是隨機的,所以翻頁(yè)后會(huì )有數據重復,所以使用了重復數據刪除,后面會(huì )講到。
添加刪除文本和源碼中的emoji表情的代碼(寫(xiě)入數據庫花了很長(cháng)時(shí)間,幾乎從刪除庫到逃跑/(ㄒoㄒ)/),還刪除了對別人的回復與它混合。html代碼。
我只寫(xiě)了讀取的數據,沒(méi)有寫(xiě)怎么保存,因為我們需要統計!根據!圖書(shū)館!熱的?。ㄟ@才是重點(diǎn)!敲黑板)
在python中讀取和寫(xiě)入數據庫
微博爬蟲(chóng)雖然大大增加了數據獲取量,但也因為是爬蟲(chóng)而輕易被新浪封殺。這里結束循環(huán)的判斷是網(wǎng)絡(luò )狀態(tài)不是200,但是當微博發(fā)現是爬蟲(chóng)時(shí),微博會(huì )返回一個(gè)網(wǎng)頁(yè),網(wǎng)頁(yè)中并沒(méi)有真實(shí)的內容。這時(shí)候程序會(huì )報錯,而之前爬取的數據,什么都沒(méi)有了。
但是如果你爬一會(huì )兒,保存一次數據,數據量會(huì )增加……冷文件隨機射在猿臉上……我的心就像是……這時(shí)候,我們需要使用數據庫。
數據庫,顧名思義,就是存儲數據的倉庫。數據庫作為一個(gè)發(fā)展了60多年的管理系統,應用領(lǐng)域巨大,功能復雜……好吧,我不能再編輯了。
在本文中,數據庫的主要作用是一個(gè)AI風(fēng)格的excel表格(●—●)。在爬取的過(guò)程中,爬取的數據會(huì )存儲在里面,爬取的數字也會(huì )存儲在里面。即使爬蟲(chóng)程序中斷,中斷前爬取的數據也會(huì )存入數據庫。
大多數數據庫都可以用python,我知道mysql、sqlite、mongodb、redis。這里是mysql,mac上mysql的安裝,Navicat的使用,管理數據庫的軟件,其他系統大家可以自己找,如果安裝使用過(guò)程中出現問(wèn)題,請不要找我(溜走)根據上面的代碼,在navicat中創(chuàng )建數據庫、表和字段,以及字段的格式。將代碼添加到 Python 程序。
運行python程序,我大概爬了2w實(shí)時(shí)評論。不得不說(shuō),新浪微博的反爬還是很厲害的。解決方案有兩種:更改IP和切換帳戶(hù)。我之前寫(xiě)過(guò)關(guān)于IP代理的使用??梢栽趯毑厣腺徺I(mǎi),但是!_(:зゝ∠)_因為這篇文章的作者是個(gè)很窮也經(jīng)常小氣的人,而且身患重?。☉邪?w條數據也有研究?jì)r(jià)值,對吧(((;??? ; ))),讓我們繼續我們的研究 (((;???;)))...
在進(jìn)行下一步之前,我們還需要讀取數據庫的內容,python中讀取數據庫的代碼也很簡(jiǎn)單。
這樣就讀出了之前爬取的信息,但是前面已經(jīng)提到,微博爬蟲(chóng)在翻頁(yè)的時(shí)候返回的數據個(gè)數是隨機的,所以會(huì )出現重復的情況,所以讀完之后需要使用使數據變得繁重的 if 語(yǔ)句。
4.自然語(yǔ)言處理
自然語(yǔ)言處理是人工智能的一個(gè)領(lǐng)域。機器可以通過(guò)算法設計來(lái)理解人類(lèi)語(yǔ)言。自然語(yǔ)言也是人工智能的難點(diǎn)。漢語(yǔ)等語(yǔ)言是深奧難測的。最大的困難是python中有很多與NLP相關(guān)的模塊。感興趣的朋友可以通過(guò)在python中實(shí)現簡(jiǎn)單的文本情感分析來(lái)探索NLP。
我拿了(ban)test(yun)一些現成的情感分析算法,對爬取的評論進(jìn)行分析。錯誤率很高_(:зゝ∠)_,怎么辦?算法應該重新設計嗎?好像遇到了人生第一個(gè)大問(wèn)題,就是沒(méi)學(xué)好語(yǔ)言……
當然,像我這樣聰明(lan)和生活(duo)的女孩子,自然很快就發(fā)現了python中的一個(gè)中文著(zhù)名的NLP庫:snowNLP。snowNLP調用的方法比較簡(jiǎn)單。調用方法和生成結果在源碼中有詳細說(shuō)明。
這段代碼讀取數據庫后獲取評論正文生成的列表文件,依次對每條評論進(jìn)行情感值分析。snowNLP 可以根據給定的句子生成一個(gè)介于 0 和 1 之間的值。當值大于0.5時(shí),表示句子的情感極性更積極。當分數小于 0.5 時(shí),情緒的極性偏向于負面。當然,越是朝著(zhù)兩個(gè)腦袋,情緒越明顯。我們來(lái)看看測試評論的結果。
第一項:惡心給了0.01分,最后一項:支持薛之謙給了0.99分??雌渌痉仙舷挛牡木渥拥膽B(tài)度,當需要對單個(gè)產(chǎn)品的評價(jià)態(tài)度進(jìn)行評價(jià)時(shí),可以使用snowNLP。但由于老雪的評論涉及到他本人、李雨桐、高磊鑫三個(gè)人,算法無(wú)法判斷評論的情感價(jià)值是誰(shuí)的,而且微博評論可以由粉絲互相回復,這使得確定評論的主題是誰(shuí)。這更令人困惑(機器說(shuō)我無(wú)法學(xué)習......)。
這似乎意味著(zhù)這個(gè)分析的結果將是……沒(méi)有用處。我不希望這種事情發(fā)生……我是人……最重要的是要開(kāi)心……我不會(huì )寫(xiě)算法,我的語(yǔ)言也不好,我真的做不到(?°?°?)@ >…
5.分析結果
這次分析的目的愉快地從分析粉絲對薛之謙事件的情緒轉變?yōu)閱渭兎治龇劢z的情緒(●—●)。
plt.hist(sentimentslist,bins=np.arange(0,1,0.02))
plt.show()
統計上一節處理的情感值列表,生成分布圖。以下數據采集時(shí)間為9月27日19:00,采集2w條評論。
對了(真的對了,一臉正經(jīng))我還爬了2w條李雨桐轉發(fā)網(wǎng)友捐款的微博評論。
對了(真的對了,看我真誠的眼神)我爬了微博評論說(shuō)陳赫作弊時(shí)發(fā)錯博了。
從這三張圖可以看出,在0、1的末端和0.5附近的情緒值更頻繁,說(shuō)明粉絲對此類(lèi)事件的情緒是正面的還是負面的。比較明顯。但是您也可以從圖片中看到一些細微的差異。老薛微博中接近1的情感值數量高于接近0的數量,但沒(méi)有超過(guò)700個(gè)。李雨桐微博中接近1的情感值數量要低得多。 0,甚至接近0的數字也達到了1000多,但都超過(guò)了700,而陳赫的微博分析結果顯示,兩者都接近800。由于算法存在一定誤差,不代表真實(shí)審查結果,所以我不再分析它(你知道的)。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何調用微博API爬單條微博的評論呢?(組圖))
當我沉浸在學(xué)習mysql、scrapy、django準備下一波吹水的時(shí)候,有人說(shuō),你可以爬下老薛的微博,蹭個(gè)熱點(diǎn),這讓勤奮(mo)很難( mo) learning (kou) xi (jia) 我停止發(fā)幾個(gè)代碼了。
然后趕緊關(guān)注了最近關(guān)于老薛的新聞……感受了劇情的復雜和案件的撲朔迷離……我默默的學(xué)會(huì )了看合同……怎么用ELA分析圖片……論文怎么寫(xiě)……怎么查別人的銀行對賬單……一點(diǎn)小知識……讓我慢一點(diǎn)……
所以,這次的主題是分析老薛最新的微博評論,分析評論粉絲的心情,聽(tīng)我說(shuō)。
1.新浪微博API
在經(jīng)歷了幾次(非常痛苦的)爬蟲(chóng)禁令后,我學(xué)會(huì )了在爬 網(wǎng)站 之前檢查 API 的“好”習慣。新浪作為大公司,怎么可能不推出新浪微博API?新浪有自己的開(kāi)發(fā)者開(kāi)放平臺。我們就不講python調用微博API的方法了。以下是登錄App_key和App_secret訪(fǎng)問(wèn)微博。API的代碼,代碼基于Python2。Python3 使用 weibo 模塊存在一定的問(wèn)題。
既然知道了如何登錄API,那么如何調用API爬取一條微博評論呢?一行代碼就可以做到。
r = ments.show.get(id = 41509,count = 200,page = 1)
一條微博的所有評論信息都在ments中。這里我們需要對比一下微博API文檔。微博API中說(shuō)調用微博評論API需要用戶(hù)授權,但是捏~只要知道單條微博的id,就可以調用這個(gè)API后,再講如何獲取單條微博的id(小聲點(diǎn),別讓微博知道,萬(wàn)一發(fā)了)。
以client.interface name.get(request parameter)的方式獲取API。獲取API后,您可以在接口詳情中查看規格。文檔中有返回結果的示例。
關(guān)鍵數據的json接口名稱(chēng)也在文檔中給出。
如果我們想獲取微博評論的內容,只需要調用文本接口即可
對于 st inments:
文本 = st.text
2.微博爬蟲(chóng)
通過(guò)調用新浪微博API,我們可以簡(jiǎn)單的獲取單條微博的評論信息。為什么簡(jiǎn)單,因為流行的信息很昂貴!你以為大V的微博只是免費給你API調用嗎?未經(jīng)認證的應用程序開(kāi)發(fā)人員每天只能請求數千次 API。這對于老薛這種單條微博評論幾十萬(wàn)的大V來(lái)說(shuō),是個(gè)大問(wèn)題。說(shuō)...太少(TT)
所以捏,還是要寫(xiě)微博爬蟲(chóng)。
俗話(huà)說(shuō),知己知彼,百戰不殆。作為一家大公司,新浪一定經(jīng)歷了數百場(chǎng)戰斗。它一定經(jīng)歷過(guò)無(wú)數次爬蟲(chóng)與反爬蟲(chóng)的戰爭,一定有完善的反爬蟲(chóng)策略。俗話(huà)說(shuō),面對強敵,繞道而行。一個(gè)老板說(shuō)的好,爬網(wǎng)站,先爬移動(dòng)端
登錄微博后,去老薛的微博回應P圖事件,_(:зゝ∠)_老薛,怪我,怪我來(lái)不及,點(diǎn)進(jìn)去的時(shí)候已經(jīng)有70w+評論了(截至發(fā)文當天已有100w+評論),靜謐的微博下,可見(jiàn)粉絲的不安之心……
移動(dòng)端微博的URL簡(jiǎn)潔明了,不像PC端的邏輯那么復雜不清楚:
從xhr文件我們可以知道,熱門(mén)評論的變化規律是:
';id=' + 單條微博id + '&type=comment&hot=1&page=' + 頁(yè)碼
最新評論的變化規律是:
'' + 單個(gè)微博id + '&page=' + 頁(yè)碼
打開(kāi)可以看到熱門(mén)評論的json文件。
接下來(lái)就是套路,偽裝瀏覽器頭,讀取json文件,遍歷每一頁(yè)……這不是重點(diǎn)!而這些我之前都講過(guò)~直接上代碼~這里是Python3的代碼~
這里有幾點(diǎn)注意事項:
設置爬取間隔后,微博爬蟲(chóng)被封禁的概率大大降低(尤其是晚上)
新浪每次返回的json數據個(gè)數是隨機的,所以翻頁(yè)后會(huì )有數據重復,所以使用了重復數據刪除,后面會(huì )講到。
添加刪除文本和源碼中的emoji表情的代碼(寫(xiě)入數據庫花了很長(cháng)時(shí)間,幾乎從刪除庫到逃跑/(ㄒoㄒ)/),還刪除了對別人的回復與它混合。html代碼。
我只寫(xiě)了讀取的數據,沒(méi)有寫(xiě)怎么保存,因為我們需要統計!根據!圖書(shū)館!熱的?。ㄟ@才是重點(diǎn)!敲黑板)
在python中讀取和寫(xiě)入數據庫
微博爬蟲(chóng)雖然大大增加了數據獲取量,但也因為是爬蟲(chóng)而輕易被新浪封殺。這里結束循環(huán)的判斷是網(wǎng)絡(luò )狀態(tài)不是200,但是當微博發(fā)現是爬蟲(chóng)時(shí),微博會(huì )返回一個(gè)網(wǎng)頁(yè),網(wǎng)頁(yè)中并沒(méi)有真實(shí)的內容。這時(shí)候程序會(huì )報錯,而之前爬取的數據,什么都沒(méi)有了。
但是如果你爬一會(huì )兒,保存一次數據,數據量會(huì )增加……冷文件隨機射在猿臉上……我的心就像是……這時(shí)候,我們需要使用數據庫。
數據庫,顧名思義,就是存儲數據的倉庫。數據庫作為一個(gè)發(fā)展了60多年的管理系統,應用領(lǐng)域巨大,功能復雜……好吧,我不能再編輯了。
在本文中,數據庫的主要作用是一個(gè)AI風(fēng)格的excel表格(●—●)。在爬取的過(guò)程中,爬取的數據會(huì )存儲在里面,爬取的數字也會(huì )存儲在里面。即使爬蟲(chóng)程序中斷,中斷前爬取的數據也會(huì )存入數據庫。
大多數數據庫都可以用python,我知道mysql、sqlite、mongodb、redis。這里是mysql,mac上mysql的安裝,Navicat的使用,管理數據庫的軟件,其他系統大家可以自己找,如果安裝使用過(guò)程中出現問(wèn)題,請不要找我(溜走)根據上面的代碼,在navicat中創(chuàng )建數據庫、表和字段,以及字段的格式。將代碼添加到 Python 程序。
運行python程序,我大概爬了2w實(shí)時(shí)評論。不得不說(shuō),新浪微博的反爬還是很厲害的。解決方案有兩種:更改IP和切換帳戶(hù)。我之前寫(xiě)過(guò)關(guān)于IP代理的使用??梢栽趯毑厣腺徺I(mǎi),但是!_(:зゝ∠)_因為這篇文章的作者是個(gè)很窮也經(jīng)常小氣的人,而且身患重?。☉邪?w條數據也有研究?jì)r(jià)值,對吧(((;??? ; ))),讓我們繼續我們的研究 (((;???;)))...
在進(jìn)行下一步之前,我們還需要讀取數據庫的內容,python中讀取數據庫的代碼也很簡(jiǎn)單。
這樣就讀出了之前爬取的信息,但是前面已經(jīng)提到,微博爬蟲(chóng)在翻頁(yè)的時(shí)候返回的數據個(gè)數是隨機的,所以會(huì )出現重復的情況,所以讀完之后需要使用使數據變得繁重的 if 語(yǔ)句。
4.自然語(yǔ)言處理
自然語(yǔ)言處理是人工智能的一個(gè)領(lǐng)域。機器可以通過(guò)算法設計來(lái)理解人類(lèi)語(yǔ)言。自然語(yǔ)言也是人工智能的難點(diǎn)。漢語(yǔ)等語(yǔ)言是深奧難測的。最大的困難是python中有很多與NLP相關(guān)的模塊。感興趣的朋友可以通過(guò)在python中實(shí)現簡(jiǎn)單的文本情感分析來(lái)探索NLP。
我拿了(ban)test(yun)一些現成的情感分析算法,對爬取的評論進(jìn)行分析。錯誤率很高_(:зゝ∠)_,怎么辦?算法應該重新設計嗎?好像遇到了人生第一個(gè)大問(wèn)題,就是沒(méi)學(xué)好語(yǔ)言……
當然,像我這樣聰明(lan)和生活(duo)的女孩子,自然很快就發(fā)現了python中的一個(gè)中文著(zhù)名的NLP庫:snowNLP。snowNLP調用的方法比較簡(jiǎn)單。調用方法和生成結果在源碼中有詳細說(shuō)明。
這段代碼讀取數據庫后獲取評論正文生成的列表文件,依次對每條評論進(jìn)行情感值分析。snowNLP 可以根據給定的句子生成一個(gè)介于 0 和 1 之間的值。當值大于0.5時(shí),表示句子的情感極性更積極。當分數小于 0.5 時(shí),情緒的極性偏向于負面。當然,越是朝著(zhù)兩個(gè)腦袋,情緒越明顯。我們來(lái)看看測試評論的結果。
第一項:惡心給了0.01分,最后一項:支持薛之謙給了0.99分??雌渌痉仙舷挛牡木渥拥膽B(tài)度,當需要對單個(gè)產(chǎn)品的評價(jià)態(tài)度進(jìn)行評價(jià)時(shí),可以使用snowNLP。但由于老雪的評論涉及到他本人、李雨桐、高磊鑫三個(gè)人,算法無(wú)法判斷評論的情感價(jià)值是誰(shuí)的,而且微博評論可以由粉絲互相回復,這使得確定評論的主題是誰(shuí)。這更令人困惑(機器說(shuō)我無(wú)法學(xué)習......)。
這似乎意味著(zhù)這個(gè)分析的結果將是……沒(méi)有用處。我不希望這種事情發(fā)生……我是人……最重要的是要開(kāi)心……我不會(huì )寫(xiě)算法,我的語(yǔ)言也不好,我真的做不到(?°?°?)@ >…
5.分析結果
這次分析的目的愉快地從分析粉絲對薛之謙事件的情緒轉變?yōu)閱渭兎治龇劢z的情緒(●—●)。
plt.hist(sentimentslist,bins=np.arange(0,1,0.02))
plt.show()
統計上一節處理的情感值列表,生成分布圖。以下數據采集時(shí)間為9月27日19:00,采集2w條評論。
對了(真的對了,一臉正經(jīng))我還爬了2w條李雨桐轉發(fā)網(wǎng)友捐款的微博評論。
對了(真的對了,看我真誠的眼神)我爬了微博評論說(shuō)陳赫作弊時(shí)發(fā)錯博了。
從這三張圖可以看出,在0、1的末端和0.5附近的情緒值更頻繁,說(shuō)明粉絲對此類(lèi)事件的情緒是正面的還是負面的。比較明顯。但是您也可以從圖片中看到一些細微的差異。老薛微博中接近1的情感值數量高于接近0的數量,但沒(méi)有超過(guò)700個(gè)。李雨桐微博中接近1的情感值數量要低得多。 0,甚至接近0的數字也達到了1000多,但都超過(guò)了700,而陳赫的微博分析結果顯示,兩者都接近800。由于算法存在一定誤差,不代表真實(shí)審查結果,所以我不再分析它(你知道的)。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(實(shí)現一個(gè)綁定新浪微博實(shí)現同步微博登錄效果的方便)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 55 次瀏覽 ? 2022-01-28 21:05
近日,公司要求實(shí)現綁定新浪微博,以達到同步微博登錄的效果。
我花了一段時(shí)間才充分利用它。下面說(shuō)說(shuō)我的實(shí)現過(guò)程,希望能給想做這個(gè)開(kāi)發(fā)的人一些幫助!
首先我們要到新浪微博開(kāi)放平臺創(chuàng )建我們的網(wǎng)站
在創(chuàng )建網(wǎng)站之前,如果沒(méi)有認證,需要先認證(幾小時(shí)內可以審核通過(guò))
根據條件創(chuàng )建網(wǎng)站。中途注意復制一段代碼到發(fā)布的項目中,然后等待審批(預計時(shí)間)
中間會(huì )返回一個(gè)AppKey和一個(gè)AppSecret;
批準后,我們??將正式開(kāi)始我們的開(kāi)發(fā)過(guò)程
我們先來(lái)看看整個(gè)過(guò)程
在管理中心 > 接口管理中有所有可以調用的授權接口
在授權機制里面。如果測試用戶(hù)可以填寫(xiě)/Weibo.aspx,請注意填寫(xiě)其回調地址(Weibo.aspx是我們的回調頁(yè)面)
public partial class wbAPI : System.Web.UI.Page
{
public const string AppKey = "207788581"; //請自行設置AppKey
public const string AppSecret = "cba11dad8522a7b1f32aefde396be"; //請自行設置AppSecret
public const string CallbackUrl = "http://www.miutrip.com/Weibo.aspx"; //請自行設置回調地址,一般這里不用填應用實(shí)際地址,填站內應用地址也是可以的
protected void Page_Load(object sender, EventArgs e)
{
#region 注意事項(綁定新浪微博)
/**
*這段代碼放入你的觸發(fā)時(shí)間處。綁定按鈕,一般是在別的頁(yè)面跳過(guò)
* 127.0.0.1本機IP 一般用于測試
* 8080 本機端口號
* Weibo.aspx為當前你的頁(yè)面
* 授權申請成功之后,配置的返回路徑應該為 http://www.miutrip.com/Weibo.aspx
* 調用微博信息 要添加NetDimension.Weibo.DLL文件
*/
// href="https://api.weibo.com/oauth2/a ... ot%3B
#endregion
if (!IsPostBack)
{
var sign = Request["code"];
//var sign = "b3eb3bccbf4cd9399236a02a81cde4bf";
var oauth = new NetDimension.Weibo.OAuth(AppKey, AppSecret, CallbackUrl);
/*
* 正常的流程或Web流程:
* 1. 獲取授權地址
* 2. 訪(fǎng)問(wèn)授權地址
* 3. 授權成功后自動(dòng)跳轉至callback指定的網(wǎng)站,并獲得code
* 4. 通過(guò)code換取access token
*/
if (!string.IsNullOrEmpty(sign))
{
var accessToken = oauth.GetAccessTokenByAuthorizationCode(sign).Token;//注意:callback指定的url必須一致
oauth = new OAuth(AppKey, AppSecret, accessToken, "");
var sina = new Client(oauth);
var userInfo = sina.API.Dynamic.Users.Show(uid: sina.API.Entity.Account.GetUID());
//userInfo就為我們得到的用戶(hù)信息
Response.Write(userInfo);
//Server.Transfer("CorpActivate.aspx", true);
}
}
}
要實(shí)現這個(gè)頁(yè)面,我們還需要添加一個(gè)DLL:NetDimension.Weibo.dll 可以在線(xiàn)下載
微博入口:
新浪微博登陸
function openwin() {
window.open("https://api.weibo.com/oauth2/a ... ot%3B, "newwindow", "height=100, width=400, toolbar =no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") //寫(xiě)成一行
}
client_id 是 appkey。如果有多個(gè)微博條目,不方便處理。
可以在回調地址中,即redirect_uri=
http://www.miutrip.com/Weibo.aspx?sinatype=Login
后跟一個(gè)參數,用于區分該條目傳遞的值。
您可以在 weibo.aspx 獲得它
string sinatype = Request.QueryString["Login"];
有什么不明白的可以加我@寫(xiě)下你的情況 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(實(shí)現一個(gè)綁定新浪微博實(shí)現同步微博登錄效果的方便)
近日,公司要求實(shí)現綁定新浪微博,以達到同步微博登錄的效果。
我花了一段時(shí)間才充分利用它。下面說(shuō)說(shuō)我的實(shí)現過(guò)程,希望能給想做這個(gè)開(kāi)發(fā)的人一些幫助!
首先我們要到新浪微博開(kāi)放平臺創(chuàng )建我們的網(wǎng)站
在創(chuàng )建網(wǎng)站之前,如果沒(méi)有認證,需要先認證(幾小時(shí)內可以審核通過(guò))
根據條件創(chuàng )建網(wǎng)站。中途注意復制一段代碼到發(fā)布的項目中,然后等待審批(預計時(shí)間)
中間會(huì )返回一個(gè)AppKey和一個(gè)AppSecret;
批準后,我們??將正式開(kāi)始我們的開(kāi)發(fā)過(guò)程
我們先來(lái)看看整個(gè)過(guò)程
在管理中心 > 接口管理中有所有可以調用的授權接口
在授權機制里面。如果測試用戶(hù)可以填寫(xiě)/Weibo.aspx,請注意填寫(xiě)其回調地址(Weibo.aspx是我們的回調頁(yè)面)
public partial class wbAPI : System.Web.UI.Page
{
public const string AppKey = "207788581"; //請自行設置AppKey
public const string AppSecret = "cba11dad8522a7b1f32aefde396be"; //請自行設置AppSecret
public const string CallbackUrl = "http://www.miutrip.com/Weibo.aspx"; //請自行設置回調地址,一般這里不用填應用實(shí)際地址,填站內應用地址也是可以的
protected void Page_Load(object sender, EventArgs e)
{
#region 注意事項(綁定新浪微博)
/**
*這段代碼放入你的觸發(fā)時(shí)間處。綁定按鈕,一般是在別的頁(yè)面跳過(guò)
* 127.0.0.1本機IP 一般用于測試
* 8080 本機端口號
* Weibo.aspx為當前你的頁(yè)面
* 授權申請成功之后,配置的返回路徑應該為 http://www.miutrip.com/Weibo.aspx
* 調用微博信息 要添加NetDimension.Weibo.DLL文件
*/
// href="https://api.weibo.com/oauth2/a ... ot%3B
#endregion
if (!IsPostBack)
{
var sign = Request["code"];
//var sign = "b3eb3bccbf4cd9399236a02a81cde4bf";
var oauth = new NetDimension.Weibo.OAuth(AppKey, AppSecret, CallbackUrl);
/*
* 正常的流程或Web流程:
* 1. 獲取授權地址
* 2. 訪(fǎng)問(wèn)授權地址
* 3. 授權成功后自動(dòng)跳轉至callback指定的網(wǎng)站,并獲得code
* 4. 通過(guò)code換取access token
*/
if (!string.IsNullOrEmpty(sign))
{
var accessToken = oauth.GetAccessTokenByAuthorizationCode(sign).Token;//注意:callback指定的url必須一致
oauth = new OAuth(AppKey, AppSecret, accessToken, "");
var sina = new Client(oauth);
var userInfo = sina.API.Dynamic.Users.Show(uid: sina.API.Entity.Account.GetUID());
//userInfo就為我們得到的用戶(hù)信息
Response.Write(userInfo);
//Server.Transfer("CorpActivate.aspx", true);
}
}
}
要實(shí)現這個(gè)頁(yè)面,我們還需要添加一個(gè)DLL:NetDimension.Weibo.dll 可以在線(xiàn)下載
微博入口:
新浪微博登陸
function openwin() {
window.open("https://api.weibo.com/oauth2/a ... ot%3B, "newwindow", "height=100, width=400, toolbar =no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") //寫(xiě)成一行
}
client_id 是 appkey。如果有多個(gè)微博條目,不方便處理。
可以在回調地址中,即redirect_uri=
http://www.miutrip.com/Weibo.aspx?sinatype=Login
后跟一個(gè)參數,用于區分該條目傳遞的值。
您可以在 weibo.aspx 獲得它
string sinatype = Request.QueryString["Login"];
有什么不明白的可以加我@寫(xiě)下你的情況
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(國外的微博程序,你知道幾個(gè)?(上))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 404 次瀏覽 ? 2022-02-18 07:17
雖然國外微博程序功能齊全,但StateusNet等可能并不適合國內特殊環(huán)境。在這種情況下,我們來(lái)數一數國內的微博產(chǎn)品。更多詳情請關(guān)注相關(guān)報道。
微博
微博v2.0官方版下載
界面預覽
新浪微博基于新浪開(kāi)放的API,通過(guò)綁定新浪微博賬號可以實(shí)現與新浪微博的無(wú)縫對接。微博完全免費開(kāi)源,如果不能完全滿(mǎn)足客戶(hù)的需求,客戶(hù)可以自由修改。微博支持與原站賬號系統對接。1. 版本 1 內置了 Discuz! 的帳戶(hù)適配器,可以連接 Discuz! 和微博賬戶(hù),只需少量操作。微博支持換膚機制。除了默認提供的六套皮膚外,還可以自行開(kāi)發(fā)自定義皮膚。
微博
iWeibo v1.0 下載
界面預覽
騰訊iWeibo系統是基于騰訊微博開(kāi)放平臺API開(kāi)發(fā)的免費微博系統。微博功能齊全,可輕松接入騰訊微博。
頁(yè)面烹飪
PageCookery微博系統v0.9.8下載
界面預覽
PageCookery 是國內第一個(gè)公開(kāi)發(fā)布的單用戶(hù)版本的開(kāi)源微博程序?;赑HP+MySQL架構,以“分享”和“發(fā)現”為理念的安全、高效、穩定的Web2.0微博解決方案。
便條狗
注意狗v3.6.6.20120829升級包UTF-8下載
界面預覽
Notedog微博系統是一套行業(yè)領(lǐng)先的開(kāi)源PHP微博程序。支持網(wǎng)頁(yè)、手機、QQ機器人、異地分享等多種方式發(fā)布內容。同步到新浪微博(可以使用新浪微博賬號登錄、注冊、綁定)等傳播內容是目前最流行、最受歡迎的互動(dòng)系統。
易談
EasyTalk v5.0.1 build 20100801下載
界面預覽
EasyTalk是國內首個(gè)PHP+Mysql多用戶(hù)開(kāi)源微博系統,支持網(wǎng)頁(yè)、手機等多種方式發(fā)布和接收信息。EasyTalk 完全符合中國人的上網(wǎng)習慣。安裝部署簡(jiǎn)單,管理方便。EasyTalk功能強大,二次開(kāi)發(fā)率高,人性化的模板定制功能大大提升了用戶(hù)體驗。因此,EasyTalk相對于國內其他微博軟件具有絕對優(yōu)勢! 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(國外的微博程序,你知道幾個(gè)?(上))
雖然國外微博程序功能齊全,但StateusNet等可能并不適合國內特殊環(huán)境。在這種情況下,我們來(lái)數一數國內的微博產(chǎn)品。更多詳情請關(guān)注相關(guān)報道。
微博
微博v2.0官方版下載


界面預覽
新浪微博基于新浪開(kāi)放的API,通過(guò)綁定新浪微博賬號可以實(shí)現與新浪微博的無(wú)縫對接。微博完全免費開(kāi)源,如果不能完全滿(mǎn)足客戶(hù)的需求,客戶(hù)可以自由修改。微博支持與原站賬號系統對接。1. 版本 1 內置了 Discuz! 的帳戶(hù)適配器,可以連接 Discuz! 和微博賬戶(hù),只需少量操作。微博支持換膚機制。除了默認提供的六套皮膚外,還可以自行開(kāi)發(fā)自定義皮膚。
微博
iWeibo v1.0 下載


界面預覽
騰訊iWeibo系統是基于騰訊微博開(kāi)放平臺API開(kāi)發(fā)的免費微博系統。微博功能齊全,可輕松接入騰訊微博。
頁(yè)面烹飪
PageCookery微博系統v0.9.8下載


界面預覽
PageCookery 是國內第一個(gè)公開(kāi)發(fā)布的單用戶(hù)版本的開(kāi)源微博程序?;赑HP+MySQL架構,以“分享”和“發(fā)現”為理念的安全、高效、穩定的Web2.0微博解決方案。
便條狗
注意狗v3.6.6.20120829升級包UTF-8下載


界面預覽
Notedog微博系統是一套行業(yè)領(lǐng)先的開(kāi)源PHP微博程序。支持網(wǎng)頁(yè)、手機、QQ機器人、異地分享等多種方式發(fā)布內容。同步到新浪微博(可以使用新浪微博賬號登錄、注冊、綁定)等傳播內容是目前最流行、最受歡迎的互動(dòng)系統。
易談
EasyTalk v5.0.1 build 20100801下載


界面預覽
EasyTalk是國內首個(gè)PHP+Mysql多用戶(hù)開(kāi)源微博系統,支持網(wǎng)頁(yè)、手機等多種方式發(fā)布和接收信息。EasyTalk 完全符合中國人的上網(wǎng)習慣。安裝部署簡(jiǎn)單,管理方便。EasyTalk功能強大,二次開(kāi)發(fā)率高,人性化的模板定制功能大大提升了用戶(hù)體驗。因此,EasyTalk相對于國內其他微博軟件具有絕對優(yōu)勢!
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站-webgis-native)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 55 次瀏覽 ? 2022-02-17 19:04
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站-webgis-native/
你好!專(zhuān)注服務(wù)于企業(yè)級大數據分析、數據可視化等需求,相關(guān)產(chǎn)品線(xiàn)包括行業(yè)分析bi系統、行業(yè)分析報告bi系統、bi平臺、數據源及數據處理模塊,平臺已經(jīng)成功服務(wù)于多家企業(yè)、政府部門(mén)。
我們之前用了行業(yè)分析的bi系統,特別方便快捷,不管是跟行業(yè)數據分析相關(guān)的各種儀表盤(pán)、報表、分析報告,bi系統都是實(shí)時(shí)同步的,不用維護,不同部門(mén)的進(jìn)行交流,互通有無(wú)也很方便。
這個(gè),你可以先看看新浪微博開(kāi)放平臺有什么合作平臺之類(lèi)的,是專(zhuān)注于微博開(kāi)放平臺開(kāi)發(fā),算是業(yè)內比較專(zhuān)業(yè)的了,可以去了解下。
看過(guò)一篇文章(來(lái)自愛(ài)分析),
我認為是這樣1.提供技術(shù)支持2.提供運營(yíng)支持3.提供專(zhuān)業(yè)的咨詢(xún)。
微博數據上報平臺和微博數據采集平臺了解一下,為多方需求提供“天貓超市的毛利分析和進(jìn)銷(xiāo)存管理”服務(wù),是騰訊、阿里、大麥科技合作成立的一個(gè)專(zhuān)業(yè)團隊提供服務(wù)的。詳情請見(jiàn)新浪微博開(kāi)放平臺。
找
國內的可以了解下apilink, 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站-webgis-native)
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站-webgis-native/
你好!專(zhuān)注服務(wù)于企業(yè)級大數據分析、數據可視化等需求,相關(guān)產(chǎn)品線(xiàn)包括行業(yè)分析bi系統、行業(yè)分析報告bi系統、bi平臺、數據源及數據處理模塊,平臺已經(jīng)成功服務(wù)于多家企業(yè)、政府部門(mén)。
我們之前用了行業(yè)分析的bi系統,特別方便快捷,不管是跟行業(yè)數據分析相關(guān)的各種儀表盤(pán)、報表、分析報告,bi系統都是實(shí)時(shí)同步的,不用維護,不同部門(mén)的進(jìn)行交流,互通有無(wú)也很方便。
這個(gè),你可以先看看新浪微博開(kāi)放平臺有什么合作平臺之類(lèi)的,是專(zhuān)注于微博開(kāi)放平臺開(kāi)發(fā),算是業(yè)內比較專(zhuān)業(yè)的了,可以去了解下。
看過(guò)一篇文章(來(lái)自愛(ài)分析),
我認為是這樣1.提供技術(shù)支持2.提供運營(yíng)支持3.提供專(zhuān)業(yè)的咨詢(xún)。
微博數據上報平臺和微博數據采集平臺了解一下,為多方需求提供“天貓超市的毛利分析和進(jìn)銷(xiāo)存管理”服務(wù),是騰訊、阿里、大麥科技合作成立的一個(gè)專(zhuān)業(yè)團隊提供服務(wù)的。詳情請見(jiàn)新浪微博開(kāi)放平臺。
找
國內的可以了解下apilink,
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(E9%A6%E9A1%(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 71 次瀏覽 ? 2022-02-17 00:06
關(guān)于新浪微博開(kāi)放平臺的問(wèn)題很多。網(wǎng)上的文檔不是很清楚。授權機制被難住了。我不知道發(fā)生了什么事。
不小心嘗試了一個(gè)方法States返回成功,代碼如下:
1.頭部引用
2.Javascript
$(function(){
WB2.anyWhere(function(W){
W.parseCMD("/statuses/home_timeline.json?user_id=2922998432", function(sResult, bStatus){
if(bStatus == true) {
alert(sResult);
}
},{},{
method: ‘get‘
});
});
})
這里的User_id填寫(xiě)自己的Userid。不知道的可以去自己的微博查一下,或者去百度一下怎么查自己的userid。我不會(huì )在這里詳細解釋。
如果成功,會(huì )彈出object類(lèi)型的sResult,你可以根據需要調試它并獲取內容;parseCMD的第一個(gè)參數是接口,接口的詳細信息可以去新浪微博開(kāi)放平臺的API查看你需要的%E9%A6。%96%E9%A1%B5
-----新浪微博好像所有界面都不支持POST,但是默認提交還是POST方式:需要'GET',
新浪微博開(kāi)放平臺API、布扣、
新浪微博開(kāi)放平臺API
原來(lái)的: 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(E9%A6%E9A1%(圖))
關(guān)于新浪微博開(kāi)放平臺的問(wèn)題很多。網(wǎng)上的文檔不是很清楚。授權機制被難住了。我不知道發(fā)生了什么事。
不小心嘗試了一個(gè)方法States返回成功,代碼如下:
1.頭部引用
2.Javascript
$(function(){
WB2.anyWhere(function(W){
W.parseCMD("/statuses/home_timeline.json?user_id=2922998432", function(sResult, bStatus){
if(bStatus == true) {
alert(sResult);
}
},{},{
method: ‘get‘
});
});
})
這里的User_id填寫(xiě)自己的Userid。不知道的可以去自己的微博查一下,或者去百度一下怎么查自己的userid。我不會(huì )在這里詳細解釋。
如果成功,會(huì )彈出object類(lèi)型的sResult,你可以根據需要調試它并獲取內容;parseCMD的第一個(gè)參數是接口,接口的詳細信息可以去新浪微博開(kāi)放平臺的API查看你需要的%E9%A6。%96%E9%A1%B5
-----新浪微博好像所有界面都不支持POST,但是默認提交還是POST方式:需要'GET',
新浪微博開(kāi)放平臺API、布扣、
新浪微博開(kāi)放平臺API
原來(lái)的:
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 67 次瀏覽 ? 2022-02-12 21:10
介紹
最近不太忙,花點(diǎn)時(shí)間學(xué)習android app開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子,可以從基本控件和基本動(dòng)畫(huà)效果的demo合集中放出,不斷更新下載。
從這周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的安卓客戶(hù)端,盡可能的完善功能。
今天的內容
上圖是這個(gè)客戶(hù)端的主界面。目前只獲取前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
操作系統是android2.2.
用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)Message、Handler、認證相關(guān)OAuth、異步加載用戶(hù)圖片等。
新浪微博的驗證使用signpost的OAuth組件,不使用微博的SDK。
源代碼下載:新浪微博2
源碼下載后,改后綴為rar,使用壓縮軟件解壓。
關(guān)于 OAuth 身份驗證
OAuth是目前比較流行的一種授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式,國內新浪微博、騰訊微博、163微博等開(kāi)放平臺也已支持。這種驗證模式。
來(lái)自維基百科的引文
“oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用程序訪(fǎng)問(wèn)用戶(hù)放置在 網(wǎng)站 上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用程序。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)他們存儲在特定服務(wù)提供商處的數據?!?br /> 例如:
用戶(hù)A在服務(wù)提供者B上存儲了一些資源。B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。使用用戶(hù)名和密碼登錄B可以查看自己的資源。假設有一個(gè)應用程序C,當用戶(hù)A使用C時(shí),他需要自己存儲在B上的資源。有兩種方法可以在 C 上實(shí)現資源以在 B 上顯示自身。
這時(shí)C就可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想在B上展示資源時(shí),C會(huì )跳轉到B的驗證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣,您就不必擔心用戶(hù)名和密碼,也不必同時(shí)存儲多個(gè)資源。
您可以通過(guò)以下網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。
從上圖中我們可以看出,整個(gè)流程分為消費者和提供者兩部分。消費者是示例中的 C 應用程序,提供者是示例中的 B 服務(wù)提供者。
使用 OAuth 進(jìn)行認證和授權的流程如下:
用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作存儲在服務(wù)提供者中的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。服務(wù)提供者對客戶(hù)端進(jìn)行身份驗證后,將授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)token后,將用戶(hù)引導至服務(wù)提供者的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供商的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)商引導用戶(hù)返回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)授權授予客戶(hù)端訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲得的訪(fǎng)問(wèn)令牌來(lái)訪(fǎng)問(wèn)托管在服務(wù)提供商上的受保護資源。新浪微博的誓言
借用一張新浪微博oauth驗證流程圖。
當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們會(huì )根據callback_url跳轉到我們應用的某個(gè)地址。我們再次使用request_token來(lái)獲取access_token,然后我們需要通過(guò)access token來(lái)訪(fǎng)問(wèn)需要驗證的開(kāi)放平臺提供的接口。
當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,可以直接使用key進(jìn)行訪(fǎng)問(wèn)。具體請參考開(kāi)放平臺提供的API文檔。
騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上也類(lèi)似。
package com.sinaweibo2;
import oauth.signpost.OAuthConsumer;
import oauth.signpost.OAuthProvider;
import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;
import oauth.signpost.commonshttp.CommonsHttpOAuthProvider;
import oauth.signpost.exception.OAuthCommunicationException;
import oauth.signpost.exception.OAuthExpectationFailedException;
import oauth.signpost.exception.OAuthMessageSignerException;
import oauth.signpost.exception.OAuthNotAuthorizedException;
public class OAuth {
private OAuthConsumer mConsumer;
private OAuthProvider mProvider;
public static final String CALLBACK_URL = "sinaweibo2://WeiboListActivity";
public static final String CONSUMER_KEY = "1849239616";
public static final String CONSUMER_SECRET = "b2137bf782bf6cae004b8a8394d5d5d6";
public static final String REQUEST_TOKEN_URL = "http://api.t.sina.com.cn/oauth ... 3B%3B
public static final String ACCESS_TOKEN_URL = "http://api.t.sina.com.cn/oauth/access_token";
public static final String AUTHORIZE_URL = "http://api.t.sina.com.cn/oauth/authorize";
public OAuth() {
}
public String RetrieveAuthUrl() throws OAuthMessageSignerException,
OAuthNotAuthorizedException, OAuthExpectationFailedException,
OAuthCommunicationException {
mConsumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider = new CommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
return authUrl;
}
public void RetrieveAccessToken(String verifier)
throws OAuthMessageSignerException, OAuthNotAuthorizedException,
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, verifier);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下來(lái)主要完善兩個(gè)功能,一是分頁(yè)瀏覽,二是發(fā)布微博。
未來(lái)可能支持圖片發(fā)布等實(shí)用功能。
有UI美化,性能優(yōu)化。
總結
在學(xué)習的過(guò)程中,看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不錯的入門(mén)書(shū),書(shū)我沒(méi)有看完,但是看了大部分,邊看邊寫(xiě)demo。
同時(shí),論壇是eoe天天的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,總之就是鍛煉自己,強迫自己鍛煉基礎和思考。
論壇上有很多中文的pdf教程,但是我發(fā)現大部分都是android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容的翻譯。所以我覺(jué)得,如果英文不是很差,建議直接看上面兩節,同時(shí)練習里面的例子。保證在兩周內,你會(huì )取得很大的進(jìn)步。
參考
Technorati 標簽:android, 開(kāi)放平臺, oauth, 新浪微博 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
介紹
最近不太忙,花點(diǎn)時(shí)間學(xué)習android app開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子,可以從基本控件和基本動(dòng)畫(huà)效果的demo合集中放出,不斷更新下載。
從這周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的安卓客戶(hù)端,盡可能的完善功能。
今天的內容

上圖是這個(gè)客戶(hù)端的主界面。目前只獲取前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
操作系統是android2.2.
用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)Message、Handler、認證相關(guān)OAuth、異步加載用戶(hù)圖片等。
新浪微博的驗證使用signpost的OAuth組件,不使用微博的SDK。

源代碼下載:新浪微博2
源碼下載后,改后綴為rar,使用壓縮軟件解壓。
關(guān)于 OAuth 身份驗證
OAuth是目前比較流行的一種授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式,國內新浪微博、騰訊微博、163微博等開(kāi)放平臺也已支持。這種驗證模式。
來(lái)自維基百科的引文
“oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用程序訪(fǎng)問(wèn)用戶(hù)放置在 網(wǎng)站 上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用程序。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)他們存儲在特定服務(wù)提供商處的數據?!?br /> 例如:
用戶(hù)A在服務(wù)提供者B上存儲了一些資源。B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。使用用戶(hù)名和密碼登錄B可以查看自己的資源。假設有一個(gè)應用程序C,當用戶(hù)A使用C時(shí),他需要自己存儲在B上的資源。有兩種方法可以在 C 上實(shí)現資源以在 B 上顯示自身。
這時(shí)C就可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想在B上展示資源時(shí),C會(huì )跳轉到B的驗證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣,您就不必擔心用戶(hù)名和密碼,也不必同時(shí)存儲多個(gè)資源。
您可以通過(guò)以下網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。

從上圖中我們可以看出,整個(gè)流程分為消費者和提供者兩部分。消費者是示例中的 C 應用程序,提供者是示例中的 B 服務(wù)提供者。
使用 OAuth 進(jìn)行認證和授權的流程如下:
用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作存儲在服務(wù)提供者中的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。服務(wù)提供者對客戶(hù)端進(jìn)行身份驗證后,將授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)token后,將用戶(hù)引導至服務(wù)提供者的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供商的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)商引導用戶(hù)返回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)授權授予客戶(hù)端訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲得的訪(fǎng)問(wèn)令牌來(lái)訪(fǎng)問(wèn)托管在服務(wù)提供商上的受保護資源。新浪微博的誓言

借用一張新浪微博oauth驗證流程圖。
當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們會(huì )根據callback_url跳轉到我們應用的某個(gè)地址。我們再次使用request_token來(lái)獲取access_token,然后我們需要通過(guò)access token來(lái)訪(fǎng)問(wèn)需要驗證的開(kāi)放平臺提供的接口。
當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,可以直接使用key進(jìn)行訪(fǎng)問(wèn)。具體請參考開(kāi)放平臺提供的API文檔。
騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上也類(lèi)似。
package com.sinaweibo2;
import oauth.signpost.OAuthConsumer;
import oauth.signpost.OAuthProvider;
import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer;
import oauth.signpost.commonshttp.CommonsHttpOAuthProvider;
import oauth.signpost.exception.OAuthCommunicationException;
import oauth.signpost.exception.OAuthExpectationFailedException;
import oauth.signpost.exception.OAuthMessageSignerException;
import oauth.signpost.exception.OAuthNotAuthorizedException;
public class OAuth {
private OAuthConsumer mConsumer;
private OAuthProvider mProvider;
public static final String CALLBACK_URL = "sinaweibo2://WeiboListActivity";
public static final String CONSUMER_KEY = "1849239616";
public static final String CONSUMER_SECRET = "b2137bf782bf6cae004b8a8394d5d5d6";
public static final String REQUEST_TOKEN_URL = "http://api.t.sina.com.cn/oauth ... 3B%3B
public static final String ACCESS_TOKEN_URL = "http://api.t.sina.com.cn/oauth/access_token";
public static final String AUTHORIZE_URL = "http://api.t.sina.com.cn/oauth/authorize";
public OAuth() {
}
public String RetrieveAuthUrl() throws OAuthMessageSignerException,
OAuthNotAuthorizedException, OAuthExpectationFailedException,
OAuthCommunicationException {
mConsumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider = new CommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
return authUrl;
}
public void RetrieveAccessToken(String verifier)
throws OAuthMessageSignerException, OAuthNotAuthorizedException,
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, verifier);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下來(lái)主要完善兩個(gè)功能,一是分頁(yè)瀏覽,二是發(fā)布微博。
未來(lái)可能支持圖片發(fā)布等實(shí)用功能。
有UI美化,性能優(yōu)化。
總結
在學(xué)習的過(guò)程中,看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不錯的入門(mén)書(shū),書(shū)我沒(méi)有看完,但是看了大部分,邊看邊寫(xiě)demo。
同時(shí),論壇是eoe天天的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,總之就是鍛煉自己,強迫自己鍛煉基礎和思考。
論壇上有很多中文的pdf教程,但是我發(fā)現大部分都是android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容的翻譯。所以我覺(jué)得,如果英文不是很差,建議直接看上面兩節,同時(shí)練習里面的例子。保證在兩周內,你會(huì )取得很大的進(jìn)步。
參考
Technorati 標簽:android, 開(kāi)放平臺, oauth, 新浪微博
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺授權回調頁(yè)的代碼)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 62 次瀏覽 ? 2022-02-12 18:19
第 1 步:添加應用程序
進(jìn)入新浪微博開(kāi)放平臺(如果沒(méi)有,自行注冊),進(jìn)入“管理中心”,點(diǎn)擊“創(chuàng )建應用”,選擇“微鏈接應用”,然后點(diǎn)擊“創(chuàng )建應用”,選擇“手機申請”,并填寫(xiě)相應信息,如果沒(méi)有申請地址,選擇平臺提交即可。請記住保存您的 App Key 和 App Secret 以備后用。
第二步:Oauth2.0 授權設置
應用創(chuàng )建后,可以在“管理中心”-“我的應用”查看信息,“應用信息”-“高級信息”可以設置網(wǎng)站@的授權回調頁(yè)面和取消授權回調頁(yè)面>。用戶(hù)授權成功后會(huì )回調授權回調頁(yè)面,同時(shí)會(huì )返回一個(gè)“code”參數,開(kāi)發(fā)者可以用code換取Access_Token值。當然,如果是手機應用,比如本文沒(méi)有自己的授權回調頁(yè)面,建議填寫(xiě):或者類(lèi)似的。如果授權后返回的表單如下:
我們只需要得到代碼a6146547f981199c07348837b0629d5d的值。請注意,代碼的值每次都不同。
第三步:在你要點(diǎn)擊登錄的地方調整如下代碼(注意這里的redirectURI寫(xiě)你自己的回調頁(yè)面)
WBAuthorizeRequest *request = [WBAuthorizeRequest request];
request.redirectURI = @"你的授權回調頁(yè)網(wǎng)址";
request.scope = @"all";
[WeiboSDK sendRequest:request];
第四步:在appdelegate中引入頭文件,跟隨代理WeiboSDKDelegate
#import "WeiboSDK.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[WeiboSDK enableDebugMode:YES];
[WeiboSDK registerApp:kAppKey];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [WeiboSDK handleOpenURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [WeiboSDK handleOpenURL:url delegate:self];
}
/**
收到一個(gè)來(lái)自微博客戶(hù)端程序的請求
收到微博的請求后,第三方應用應該按照請求類(lèi)型進(jìn)行處理,處理完后必須通過(guò) [WeiboSDK sendResponse:] 將結果回傳給微博
@param request 具體的請求對象
*/
- (void)didReceiveWeiboRequest:(WBBaseRequest *)request {
WBProvideMessageForWeiboResponse *response = [WBProvideMessageForWeiboResponse responseWithMessage:[self messageToShare]];
[WeiboSDK sendResponse:response];
NSLog(@"收到一個(gè)來(lái)自微博客戶(hù)端程序的請求");
}
/**
收到一個(gè)來(lái)自微博客戶(hù)端程序的響應
收到微博的響應后,第三方應用可以通過(guò)響應類(lèi)型、響應的數據和 WBBaseResponse.userInfo 中的數據完成自己的功能
@param response 具體的響應對象
*/
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response {
NSLog(@"收到一個(gè)來(lái)自微博客戶(hù)端程序的響應");
// 這里response就是返回來(lái)的數據,包含token,uid等鍵值對;
NSLog(@"%@",response.userInfo);
NSString *theString = [NSString stringWithFormat:@"https://api.weibo.com/2/users/ ... ot%3B,response.userInfo[@"access_token"],response.userInfo[@"uid"]];
// 這里只是通過(guò)URL對數據進(jìn)行請求,可以用系統的也可用AFNetworking,下面我使用對AFNetworking的簡(jiǎn)單封裝過(guò)后的方法,請忽略
[NetWork netWorkWithPath:theString Params:[NSDictionary dictionary] CallBack:^(NSDictionary *info, NetType type) {
// 這里info就包含請求回來(lái)的用戶(hù)頭像等數據
NSLog(@"%@",info);
}];
}
- (WBMessageObject *)messageToShare {
WBMessageObject *message = [WBMessageObject message];
message.text = @"測試使用";
return message;
}
?。。。?!如果輸入賬號后登錄返回403錯誤,是因為項目沒(méi)有通過(guò)審核,或者沒(méi)有添加測試賬號,請到申請信息-測試信息添加測試賬號 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺授權回調頁(yè)的代碼)
第 1 步:添加應用程序
進(jìn)入新浪微博開(kāi)放平臺(如果沒(méi)有,自行注冊),進(jìn)入“管理中心”,點(diǎn)擊“創(chuàng )建應用”,選擇“微鏈接應用”,然后點(diǎn)擊“創(chuàng )建應用”,選擇“手機申請”,并填寫(xiě)相應信息,如果沒(méi)有申請地址,選擇平臺提交即可。請記住保存您的 App Key 和 App Secret 以備后用。
第二步:Oauth2.0 授權設置
應用創(chuàng )建后,可以在“管理中心”-“我的應用”查看信息,“應用信息”-“高級信息”可以設置網(wǎng)站@的授權回調頁(yè)面和取消授權回調頁(yè)面>。用戶(hù)授權成功后會(huì )回調授權回調頁(yè)面,同時(shí)會(huì )返回一個(gè)“code”參數,開(kāi)發(fā)者可以用code換取Access_Token值。當然,如果是手機應用,比如本文沒(méi)有自己的授權回調頁(yè)面,建議填寫(xiě):或者類(lèi)似的。如果授權后返回的表單如下:
我們只需要得到代碼a6146547f981199c07348837b0629d5d的值。請注意,代碼的值每次都不同。
第三步:在你要點(diǎn)擊登錄的地方調整如下代碼(注意這里的redirectURI寫(xiě)你自己的回調頁(yè)面)
WBAuthorizeRequest *request = [WBAuthorizeRequest request];
request.redirectURI = @"你的授權回調頁(yè)網(wǎng)址";
request.scope = @"all";
[WeiboSDK sendRequest:request];
第四步:在appdelegate中引入頭文件,跟隨代理WeiboSDKDelegate
#import "WeiboSDK.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[WeiboSDK enableDebugMode:YES];
[WeiboSDK registerApp:kAppKey];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [WeiboSDK handleOpenURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [WeiboSDK handleOpenURL:url delegate:self];
}
/**
收到一個(gè)來(lái)自微博客戶(hù)端程序的請求
收到微博的請求后,第三方應用應該按照請求類(lèi)型進(jìn)行處理,處理完后必須通過(guò) [WeiboSDK sendResponse:] 將結果回傳給微博
@param request 具體的請求對象
*/
- (void)didReceiveWeiboRequest:(WBBaseRequest *)request {
WBProvideMessageForWeiboResponse *response = [WBProvideMessageForWeiboResponse responseWithMessage:[self messageToShare]];
[WeiboSDK sendResponse:response];
NSLog(@"收到一個(gè)來(lái)自微博客戶(hù)端程序的請求");
}
/**
收到一個(gè)來(lái)自微博客戶(hù)端程序的響應
收到微博的響應后,第三方應用可以通過(guò)響應類(lèi)型、響應的數據和 WBBaseResponse.userInfo 中的數據完成自己的功能
@param response 具體的響應對象
*/
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response {
NSLog(@"收到一個(gè)來(lái)自微博客戶(hù)端程序的響應");
// 這里response就是返回來(lái)的數據,包含token,uid等鍵值對;
NSLog(@"%@",response.userInfo);
NSString *theString = [NSString stringWithFormat:@"https://api.weibo.com/2/users/ ... ot%3B,response.userInfo[@"access_token"],response.userInfo[@"uid"]];
// 這里只是通過(guò)URL對數據進(jìn)行請求,可以用系統的也可用AFNetworking,下面我使用對AFNetworking的簡(jiǎn)單封裝過(guò)后的方法,請忽略
[NetWork netWorkWithPath:theString Params:[NSDictionary dictionary] CallBack:^(NSDictionary *info, NetType type) {
// 這里info就包含請求回來(lái)的用戶(hù)頭像等數據
NSLog(@"%@",info);
}];
}
- (WBMessageObject *)messageToShare {
WBMessageObject *message = [WBMessageObject message];
message.text = @"測試使用";
return message;
}
?。。。?!如果輸入賬號后登錄返回403錯誤,是因為項目沒(méi)有通過(guò)審核,或者沒(méi)有添加測試賬號,請到申請信息-測試信息添加測試賬號
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 76 次瀏覽 ? 2022-02-12 06:16
介紹
最近不太忙,花點(diǎn)時(shí)間學(xué)習android app開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子,可以從基本控件和基本動(dòng)畫(huà)效果的demo合集中放出,不斷更新下載。
從這周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的安卓客戶(hù)端,盡可能的完善功能。
今天的內容
上圖是這個(gè)客戶(hù)端的主界面。目前只獲取前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
操作系統是android2.2.
用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)Message、Handler、認證相關(guān)OAuth、異步加載用戶(hù)圖片等。
新浪微博的驗證使用signpost的OAuth組件,不使用微博的SDK。
源代碼下載:
關(guān)于 OAuth 身份驗證
OAuth是目前比較流行的一種授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式,國內新浪微博、騰訊微博、163微博等開(kāi)放平臺也已支持。這種驗證模式。
來(lái)自維基百科的引文
“oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用程序訪(fǎng)問(wèn)用戶(hù)放置在 網(wǎng)站 上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用程序。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)他們存儲在特定服務(wù)提供商處的數據?!?br /> 例如:
用戶(hù)A在服務(wù)提供者B上存儲了一些資源。B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。使用用戶(hù)名和密碼登錄B可以查看自己的資源。假設有一個(gè)應用程序C,當用戶(hù)A使用C時(shí),他需要自己存儲在B上的資源。有兩種方法可以在 C 上實(shí)現資源以在 B 上顯示自身。
這時(shí)C就可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想在B上展示資源時(shí),C會(huì )跳轉到B的驗證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣,您就不必擔心用戶(hù)名和密碼,也不必同時(shí)存儲多個(gè)資源。
您可以通過(guò)以下網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。
從上圖中我們可以看出,整個(gè)流程分為消費者和提供者兩部分。消費者是示例中的 C 應用程序,提供者是示例中的 B 服務(wù)提供者。
使用 OAuth 進(jìn)行認證和授權的流程如下:
用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作存儲在服務(wù)提供者中的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。服務(wù)提供者對客戶(hù)端進(jìn)行身份驗證后,將授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)token后,將用戶(hù)引導至服務(wù)提供者的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供商的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)商引導用戶(hù)返回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)授權授予客戶(hù)端訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲得的訪(fǎng)問(wèn)令牌來(lái)訪(fǎng)問(wèn)托管在服務(wù)提供商上的受保護資源。
新浪微博的誓言
借用一張新浪微博oauth驗證流程圖。
當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們會(huì )根據callback_url跳轉到我們應用的某個(gè)地址。我們再次使用request_token來(lái)獲取access_token,然后我們需要通過(guò)access token來(lái)訪(fǎng)問(wèn)需要驗證的開(kāi)放平臺提供的接口。
當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,可以直接使用key進(jìn)行訪(fǎng)問(wèn)。具體請參考開(kāi)放平臺提供的API文檔。
騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上也類(lèi)似。
packagecom.sinaweibo2;
importoauth.signpost.OAuthConsumer;
importoauth.signpost.OAuthProvider;
monshttp.CommonsHttpOAuthConsumer;
monshttp.CommonsHttpOAuthProvider;
importoauth.signpost.exception.OAuthCommunicationException;
importoauth.signpost.exception.OAuthExpectationFailedException;
importoauth.signpost.exception.OAuthMessageSignerException;
importoauth.signpost.exception.OAuthNotAuthorizedException;
公共類(lèi)OAuth {
privateOAuthConsumer mConsumer;
私有OAuthProvider mProvider;
publicstaticfinalString CALLBACK_URL="sinaweibo2://WeiboListActivity";
publicstaticfinalString CONSUMER_KEY="1849239616";
publicstaticfinalString CONSUMER_SECRET="b2137bf782bf6cae004b8a8394d5d5d6";
publicstaticfinalString REQUEST_TOKEN_URL = "";
publicstaticfinalString ACCESS_TOKEN_URL = "";
publicstaticfinalString AUTHORIZE_URL = "";
公共OAuth(){
}
publicString RetrieveAuthUrl() throwsOAuthMessageSignerException,
OAuthNotAuthorizedException、OAuthExpectationFailedException、
OAuthCommunicationException {
mConsumer =newCommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider =newCommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
returnauthUrl;
}
publicvoidRetrieveAccessToken(字符串驗證器)
throwsOAuthMessageSignerException、OAuthNotAuthorizedException、
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, 驗證者);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下來(lái)主要完善兩個(gè)功能,一是分頁(yè)瀏覽,二是發(fā)布微博。
未來(lái)可能支持圖片發(fā)布等實(shí)用功能。
有UI美化,性能優(yōu)化。
總結
在學(xué)習的過(guò)程中,我看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不錯的入門(mén)書(shū),書(shū)我沒(méi)有看完,但是看了大部分,邊看邊寫(xiě)demo。
同時(shí),論壇是eoe天天的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,總之就是鍛煉自己,強迫自己鍛煉基礎和思考。
論壇上有很多中文的pdf教程,但是我發(fā)現大部分都是android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容的翻譯。所以我覺(jué)得,如果英文不是很差,建議直接看上面兩節,同時(shí)練習里面的例子。保證在兩周內,你會(huì )取得很大的進(jìn)步。
參考
Technorati 標簽:android, 開(kāi)放平臺, oauth, 新浪微博 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺做個(gè)實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的android客戶(hù)端)
介紹
最近不太忙,花點(diǎn)時(shí)間學(xué)習android app開(kāi)發(fā)。經(jīng)過(guò)兩周的學(xué)習,我在學(xué)習的同時(shí)也寫(xiě)了很多demo例子,可以從基本控件和基本動(dòng)畫(huà)效果的demo合集中放出,不斷更新下載。
從這周開(kāi)始,我打算以新浪微博開(kāi)放平臺為實(shí)踐,開(kāi)發(fā)一個(gè)功能簡(jiǎn)單的安卓客戶(hù)端,盡可能的完善功能。
今天的內容

上圖是這個(gè)客戶(hù)端的主界面。目前只獲取前20條數據。您也可以單擊刷新來(lái)刷新數據。功能比較簡(jiǎn)單。
操作系統是android2.2.
用到的技術(shù)點(diǎn)包括ListView、自定義ListAdapter、多線(xiàn)程相關(guān)Message、Handler、認證相關(guān)OAuth、異步加載用戶(hù)圖片等。
新浪微博的驗證使用signpost的OAuth組件,不使用微博的SDK。

源代碼下載:
關(guān)于 OAuth 身份驗證
OAuth是目前比較流行的一種授權方案。twitter、facebook、google等大型開(kāi)放平臺均支持oauth認證方式,國內新浪微博、騰訊微博、163微博等開(kāi)放平臺也已支持。這種驗證模式。
來(lái)自維基百科的引文
“oauth 是一種開(kāi)放標準,允許用戶(hù)允許第三方應用程序訪(fǎng)問(wèn)用戶(hù)放置在 網(wǎng)站 上的私有資源,而無(wú)需將用戶(hù)名和密碼傳遞給第三方應用程序。oauth 允許用戶(hù)提供一個(gè)令牌,而不是用戶(hù)名和密碼來(lái)訪(fǎng)問(wèn)他們存儲在特定服務(wù)提供商處的數據?!?br /> 例如:
用戶(hù)A在服務(wù)提供者B上存儲了一些資源。B支持oauth授權方式。A 是 B 上的注冊用戶(hù),擁有用戶(hù)名和密碼。使用用戶(hù)名和密碼登錄B可以查看自己的資源。假設有一個(gè)應用程序C,當用戶(hù)A使用C時(shí),他需要自己存儲在B上的資源。有兩種方法可以在 C 上實(shí)現資源以在 B 上顯示自身。
這時(shí)C就可以使用B開(kāi)啟的oauth授權機制,當用戶(hù)A想在B上展示資源時(shí),C會(huì )跳轉到B的驗證頁(yè)面,用戶(hù)在B的頁(yè)面輸入用戶(hù)名和密碼。通過(guò)后,會(huì )詢(xún)問(wèn)用戶(hù)是否為C應用開(kāi)發(fā)相關(guān)資源。用戶(hù)可以自定義C可以訪(fǎng)問(wèn)的資源,然后跳轉回C應用。這樣,您就不必擔心用戶(hù)名和密碼,也不必同時(shí)存儲多個(gè)資源。
您可以通過(guò)以下網(wǎng)站了解更多關(guān)于oauth的具體技術(shù)細節。

從上圖中我們可以看出,整個(gè)流程分為消費者和提供者兩部分。消費者是示例中的 C 應用程序,提供者是示例中的 B 服務(wù)提供者。
使用 OAuth 進(jìn)行認證和授權的流程如下:
用戶(hù)訪(fǎng)問(wèn)客戶(hù)端的網(wǎng)站,想要操作存儲在服務(wù)提供者中的用戶(hù)資源??蛻?hù)端向服務(wù)提供者請求一個(gè)臨時(shí)令牌。服務(wù)提供者對客戶(hù)端進(jìn)行身份驗證后,將授予一個(gè)臨時(shí)令牌??蛻?hù)端獲取臨時(shí)token后,將用戶(hù)引導至服務(wù)提供者的授權頁(yè)面,請求用戶(hù)授權。在這個(gè)過(guò)程中,臨時(shí)令牌和客戶(hù)端的回調連接被發(fā)送給服務(wù)提供者。用戶(hù)在服務(wù)提供商的網(wǎng)頁(yè)上輸入用戶(hù)名和密碼,然后授權客戶(hù)端訪(fǎng)問(wèn)所請求的資源。授權成功后,服務(wù)商引導用戶(hù)返回客戶(hù)端的網(wǎng)頁(yè)??蛻?hù)端根據臨時(shí)令牌從服務(wù)提供者處獲取訪(fǎng)問(wèn)令牌。服務(wù)提供者根據臨時(shí)令牌和用戶(hù)授權授予客戶(hù)端訪(fǎng)問(wèn)令牌??蛻?hù)端使用獲得的訪(fǎng)問(wèn)令牌來(lái)訪(fǎng)問(wèn)托管在服務(wù)提供商上的受保護資源。
新浪微博的誓言

借用一張新浪微博oauth驗證流程圖。
當我們在新浪微博開(kāi)放平臺上創(chuàng )建一個(gè)新的應用程序時(shí),我們會(huì )給新的應用程序分配一個(gè)key和secret,即consumerKey和consumerSecret。通過(guò)這兩件事,我們去request_token,然后將用戶(hù)重定向到新浪微博平臺的授權頁(yè)面。授權后,我們會(huì )根據callback_url跳轉到我們應用的某個(gè)地址。我們再次使用request_token來(lái)獲取access_token,然后我們需要通過(guò)access token來(lái)訪(fǎng)問(wèn)需要驗證的開(kāi)放平臺提供的接口。
當然,那些不需要驗證就可以訪(fǎng)問(wèn)的接口,可以直接使用key進(jìn)行訪(fǎng)問(wèn)。具體請參考開(kāi)放平臺提供的API文檔。
騰訊微博和163微博的開(kāi)放平臺在原理和實(shí)現上也類(lèi)似。
packagecom.sinaweibo2;
importoauth.signpost.OAuthConsumer;
importoauth.signpost.OAuthProvider;
monshttp.CommonsHttpOAuthConsumer;
monshttp.CommonsHttpOAuthProvider;
importoauth.signpost.exception.OAuthCommunicationException;
importoauth.signpost.exception.OAuthExpectationFailedException;
importoauth.signpost.exception.OAuthMessageSignerException;
importoauth.signpost.exception.OAuthNotAuthorizedException;
公共類(lèi)OAuth {
privateOAuthConsumer mConsumer;
私有OAuthProvider mProvider;
publicstaticfinalString CALLBACK_URL="sinaweibo2://WeiboListActivity";
publicstaticfinalString CONSUMER_KEY="1849239616";
publicstaticfinalString CONSUMER_SECRET="b2137bf782bf6cae004b8a8394d5d5d6";
publicstaticfinalString REQUEST_TOKEN_URL = "";
publicstaticfinalString ACCESS_TOKEN_URL = "";
publicstaticfinalString AUTHORIZE_URL = "";
公共OAuth(){
}
publicString RetrieveAuthUrl() throwsOAuthMessageSignerException,
OAuthNotAuthorizedException、OAuthExpectationFailedException、
OAuthCommunicationException {
mConsumer =newCommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
mProvider =newCommonsHttpOAuthProvider(REQUEST_TOKEN_URL,
ACCESS_TOKEN_URL, AUTHORIZE_URL);
String authUrl= mProvider.retrieveRequestToken(mConsumer, CALLBACK_URL);
returnauthUrl;
}
publicvoidRetrieveAccessToken(字符串驗證器)
throwsOAuthMessageSignerException、OAuthNotAuthorizedException、
OAuthExpectationFailedException, OAuthCommunicationException {
mProvider.setOAuth10a(true);
mProvider.retrieveAccessToken(mConsumer, 驗證者);
OAuthUser.USER_ID=mProvider.getResponseParameters().getFirst("user_id");
OAuthUser.ACCESS_TOKEN = mConsumer.getToken();
OAuthUser.ACCESS_TOKEN_SECRET = mConsumer.getTokenSecret();
}
}
更多功能
接下來(lái)主要完善兩個(gè)功能,一是分頁(yè)瀏覽,二是發(fā)布微博。
未來(lái)可能支持圖片發(fā)布等實(shí)用功能。
有UI美化,性能優(yōu)化。
總結
在學(xué)習的過(guò)程中,我看了兩本書(shū),Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527). pdf,都是很不錯的入門(mén)書(shū),書(shū)我沒(méi)有看完,但是看了大部分,邊看邊寫(xiě)demo。
同時(shí),論壇是eoe天天的開(kāi)發(fā)者門(mén)戶(hù)?;卮饐?wèn)題、解決問(wèn)題、提問(wèn)、發(fā)帖,總之就是鍛煉自己,強迫自己鍛煉基礎和思考。
論壇上有很多中文的pdf教程,但是我發(fā)現大部分都是android開(kāi)發(fā)者中心的Dev Guide和Resources中的內容的翻譯。所以我覺(jué)得,如果英文不是很差,建議直接看上面兩節,同時(shí)練習里面的例子。保證在兩周內,你會(huì )取得很大的進(jìn)步。
參考
Technorati 標簽:android, 開(kāi)放平臺, oauth, 新浪微博
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(2017年6月微博出了更新分享微博的一下插件更新)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 77 次瀏覽 ? 2022-02-12 05:13
自2017年6月起,微博發(fā)布更新分享微博api接口的消息,emlog微博同步相關(guān)插件無(wú)法再使用。
有些人可能會(huì )發(fā)現,第一次使用新版微博api時(shí),總是會(huì )報錯10014和10017。這個(gè)時(shí)候不用擔心,只是微博權限增加了,仔細閱讀參數說(shuō)明和錯誤碼就可以解決問(wèn)題。
1、首先將原來(lái)的更新界面改為分享界面。點(diǎn)擊查看相關(guān)文件。注意必填參數status參數有很多描述權限:
用戶(hù)在微博上分享的文字內容必須經(jīng)過(guò)URL編碼,內容不超過(guò)140個(gè)漢字,文字不能收錄“#topic word#”,且文字必須至少收錄一個(gè)第三方分享到微博網(wǎng)頁(yè)的URL,并且 URL 只能是第三方(調用方)綁定域下的 URL 鏈接。綁定域在“我的應用-應用信息-基本應用信息編輯-安全域名”中設置。
看完這段話(huà),一目了然,相關(guān)的錯誤代碼在這里。
2、 然后是微博開(kāi)放平臺的配置,這里有兩點(diǎn)需要注意:
(1)AppKey、AppSecret及回調接口配置;
(2)安全域名的配置。
3、以上2點(diǎn)是重點(diǎn)??梢灾苯酉螺d微博SDK,輕松集成。
此處內容已被作者隱藏,請輸入驗證碼查看內容,請關(guān)注本站bilibili直播間,贈送大禮“B克拉”(限時(shí)1小時(shí)以?xún)龋?,獲取驗證碼,并以水印或彈幕的形式展示。掃描BilibiliApp右側二維碼進(jìn)入直播間。
評論:
1、如果運營(yíng)受到系統故障影響的概率非常低,只需要帶粉絲勛章的主播私信通知事件即可。
2、此行為純屬自愿贈送。
3、驗證碼生效一次后需要重新獲取。
4、使用注意事項:
這個(gè)插件是用 php5.6 編寫(xiě)的。如果遇到語(yǔ)法錯誤,只需適當降低 php 版本即可。
5、變更日志:
2018-06-02
1、修復發(fā)送微博時(shí)的字數限制;
2、添加了可以發(fā)到微博的圖片。
2018-05-09
1、2017年6月26日更新微博API微博同步功能。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(2017年6月微博出了更新分享微博的一下插件更新)
自2017年6月起,微博發(fā)布更新分享微博api接口的消息,emlog微博同步相關(guān)插件無(wú)法再使用。
有些人可能會(huì )發(fā)現,第一次使用新版微博api時(shí),總是會(huì )報錯10014和10017。這個(gè)時(shí)候不用擔心,只是微博權限增加了,仔細閱讀參數說(shuō)明和錯誤碼就可以解決問(wèn)題。
1、首先將原來(lái)的更新界面改為分享界面。點(diǎn)擊查看相關(guān)文件。注意必填參數status參數有很多描述權限:
用戶(hù)在微博上分享的文字內容必須經(jīng)過(guò)URL編碼,內容不超過(guò)140個(gè)漢字,文字不能收錄“#topic word#”,且文字必須至少收錄一個(gè)第三方分享到微博網(wǎng)頁(yè)的URL,并且 URL 只能是第三方(調用方)綁定域下的 URL 鏈接。綁定域在“我的應用-應用信息-基本應用信息編輯-安全域名”中設置。
看完這段話(huà),一目了然,相關(guān)的錯誤代碼在這里。
2、 然后是微博開(kāi)放平臺的配置,這里有兩點(diǎn)需要注意:
(1)AppKey、AppSecret及回調接口配置;
(2)安全域名的配置。
3、以上2點(diǎn)是重點(diǎn)??梢灾苯酉螺d微博SDK,輕松集成。

此處內容已被作者隱藏,請輸入驗證碼查看內容,請關(guān)注本站bilibili直播間,贈送大禮“B克拉”(限時(shí)1小時(shí)以?xún)龋?,獲取驗證碼,并以水印或彈幕的形式展示。掃描BilibiliApp右側二維碼進(jìn)入直播間。
評論:
1、如果運營(yíng)受到系統故障影響的概率非常低,只需要帶粉絲勛章的主播私信通知事件即可。
2、此行為純屬自愿贈送。
3、驗證碼生效一次后需要重新獲取。
4、使用注意事項:
這個(gè)插件是用 php5.6 編寫(xiě)的。如果遇到語(yǔ)法錯誤,只需適當降低 php 版本即可。
5、變更日志:
2018-06-02
1、修復發(fā)送微博時(shí)的字數限制;
2、添加了可以發(fā)到微博的圖片。
2018-05-09
1、2017年6月26日更新微博API微博同步功能。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(今天下午弄了個(gè)新浪微博同步應用,測試好多次,終于成功了)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 383 次瀏覽 ? 2022-02-12 05:09
今天下午做了一個(gè)新浪微博同步應用,測試了很多次,終于成功了。說(shuō)說(shuō)我的配置過(guò)程吧。歡迎做客我的新浪微博!
首先,你必須有一個(gè)新浪微博賬號。如果你沒(méi)有,你可以注冊一個(gè)。然后你就可以成為一名開(kāi)發(fā)人員??梢渣c(diǎn)擊微博賬號,也可以直接輸入網(wǎng)址:,選擇我是開(kāi)發(fā)者,選擇創(chuàng )建應用,填寫(xiě)開(kāi)發(fā)。用戶(hù)信息,成功后獲取你的APPKEY和APP SECRET,復制并保存。
然后,去下載SDK文檔,選擇PHP語(yǔ)言,查看“通過(guò)OAuth認證”。這就是我使用的。點(diǎn)擊下面的鏈接下載并解壓到本地。
第三步,開(kāi)始測試。將解壓后的 weobodemo 文件夾復制到 test 目錄下,也就是你的站點(diǎn)目錄。您必須提前配置虛擬域名。不知道的可以參考我的另一篇文章文章,使用apache配置一個(gè)獨立的虛擬域名。
在weibodemo文件夾下有一個(gè)配置文件config.php。打開(kāi)后你就知道該怎么做了。在里面寫(xiě)下你的APP KEY和APPSECRET。在瀏覽器中打開(kāi)這一層目錄,自動(dòng)運行index.php文件,無(wú)需贅述。
此時(shí)你會(huì )發(fā)現出錯了:Notice:Undefined index: SCRIPT_URI inD:\www\weibodemo\index.phponline13
打開(kāi)index.php發(fā)現$_SERVER['SCRIPT_URI'],$_SERVER的參數根本沒(méi)有這個(gè)SCRIPT_URI,忽略它,點(diǎn)擊下面的鏈接,然后出現錯誤:對不起,那個(gè)頁(yè)面不存在!
至此,估計很多人都會(huì )放棄,一時(shí)之間不知所措。其實(shí),不要把新浪微博寫(xiě)的關(guān)于應用開(kāi)發(fā)的文章看的那么深,一般人都能看懂。仔細查看 index.php。你剛才點(diǎn)擊的鏈接地址是由WeiboOAuth類(lèi)中的getAuthorizeURL方法生成的,和下一個(gè)回調函數相關(guān),就是callback.php文件。
由此我們不難想到這個(gè)過(guò)程:首先獲取本地配置文件config.php中的APP KEY和APPSECRET,然后我們要驗證APP KEY是否合法,并詢(xún)問(wèn)我們是否授權這個(gè)應用同步更新微博,如果條件成立,則通過(guò)callback.php返回本地,我們可以在這個(gè)回調頁(yè)面寫(xiě)微博,最后點(diǎn)擊發(fā)布,從新浪官方微博登錄,就可以看到剛剛發(fā)布的消息文章 消息,下面要標注“from xxx”
這個(gè)道理不難理解。把$_SERVER['SCRIPT_URI']改成我們本地的地址,就是它所在目錄的虛擬域名的地址,這樣就可以返回callback.php,這樣就找不到頁(yè)面了。錯誤的。比如:我的本地虛擬凹陷是指向文件夾d:/www/,而我的weibodemo文件夾放在/www/下,那我就改$_SERVER['SCRIPT_URI']連接到下面的/callback.php沒(méi)關(guān)系。
這樣你就可以在顯示“授權完成”后點(diǎn)擊進(jìn)入你的微博界面weebolist.php。進(jìn)入后你會(huì )驚訝:挺粗糙的,沒(méi)有風(fēng)格,簡(jiǎn)單的html表單,哈哈,新浪微博的程序員怎么這么懶。趕緊發(fā)個(gè)微博,測試一下,激動(dòng)一下,呵呵。
我們可以總結一下,其實(shí)很簡(jiǎn)單。一共只有6個(gè)文件:config.php是配置文件。通過(guò)index.php進(jìn)入新浪微博的驗證授權頁(yè)面。同意授權后,返回callback.php頁(yè)面,點(diǎn)擊進(jìn)入。我的微博,去微博發(fā)布和列表頁(yè)weibolist.php,然后發(fā)布微博,就OK了。剩下的文件weibooauth.php是一個(gè)類(lèi)文件,里面有很多類(lèi)和函數,都是前面用到的。如果你有興趣,你可以研究它,但你可以忽略它。還有一個(gè)什么都不知道的.DS_Stor,打開(kāi)就是亂碼,我也不管,估計沒(méi)用。
另外提醒注意頁(yè)面的編碼格式,如有亂碼請耐心調試。
本文轉載自: 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(今天下午弄了個(gè)新浪微博同步應用,測試好多次,終于成功了)
今天下午做了一個(gè)新浪微博同步應用,測試了很多次,終于成功了。說(shuō)說(shuō)我的配置過(guò)程吧。歡迎做客我的新浪微博!
首先,你必須有一個(gè)新浪微博賬號。如果你沒(méi)有,你可以注冊一個(gè)。然后你就可以成為一名開(kāi)發(fā)人員??梢渣c(diǎn)擊微博賬號,也可以直接輸入網(wǎng)址:,選擇我是開(kāi)發(fā)者,選擇創(chuàng )建應用,填寫(xiě)開(kāi)發(fā)。用戶(hù)信息,成功后獲取你的APPKEY和APP SECRET,復制并保存。
然后,去下載SDK文檔,選擇PHP語(yǔ)言,查看“通過(guò)OAuth認證”。這就是我使用的。點(diǎn)擊下面的鏈接下載并解壓到本地。
第三步,開(kāi)始測試。將解壓后的 weobodemo 文件夾復制到 test 目錄下,也就是你的站點(diǎn)目錄。您必須提前配置虛擬域名。不知道的可以參考我的另一篇文章文章,使用apache配置一個(gè)獨立的虛擬域名。
在weibodemo文件夾下有一個(gè)配置文件config.php。打開(kāi)后你就知道該怎么做了。在里面寫(xiě)下你的APP KEY和APPSECRET。在瀏覽器中打開(kāi)這一層目錄,自動(dòng)運行index.php文件,無(wú)需贅述。
此時(shí)你會(huì )發(fā)現出錯了:Notice:Undefined index: SCRIPT_URI inD:\www\weibodemo\index.phponline13
打開(kāi)index.php發(fā)現$_SERVER['SCRIPT_URI'],$_SERVER的參數根本沒(méi)有這個(gè)SCRIPT_URI,忽略它,點(diǎn)擊下面的鏈接,然后出現錯誤:對不起,那個(gè)頁(yè)面不存在!
至此,估計很多人都會(huì )放棄,一時(shí)之間不知所措。其實(shí),不要把新浪微博寫(xiě)的關(guān)于應用開(kāi)發(fā)的文章看的那么深,一般人都能看懂。仔細查看 index.php。你剛才點(diǎn)擊的鏈接地址是由WeiboOAuth類(lèi)中的getAuthorizeURL方法生成的,和下一個(gè)回調函數相關(guān),就是callback.php文件。
由此我們不難想到這個(gè)過(guò)程:首先獲取本地配置文件config.php中的APP KEY和APPSECRET,然后我們要驗證APP KEY是否合法,并詢(xún)問(wèn)我們是否授權這個(gè)應用同步更新微博,如果條件成立,則通過(guò)callback.php返回本地,我們可以在這個(gè)回調頁(yè)面寫(xiě)微博,最后點(diǎn)擊發(fā)布,從新浪官方微博登錄,就可以看到剛剛發(fā)布的消息文章 消息,下面要標注“from xxx”
這個(gè)道理不難理解。把$_SERVER['SCRIPT_URI']改成我們本地的地址,就是它所在目錄的虛擬域名的地址,這樣就可以返回callback.php,這樣就找不到頁(yè)面了。錯誤的。比如:我的本地虛擬凹陷是指向文件夾d:/www/,而我的weibodemo文件夾放在/www/下,那我就改$_SERVER['SCRIPT_URI']連接到下面的/callback.php沒(méi)關(guān)系。
這樣你就可以在顯示“授權完成”后點(diǎn)擊進(jìn)入你的微博界面weebolist.php。進(jìn)入后你會(huì )驚訝:挺粗糙的,沒(méi)有風(fēng)格,簡(jiǎn)單的html表單,哈哈,新浪微博的程序員怎么這么懶。趕緊發(fā)個(gè)微博,測試一下,激動(dòng)一下,呵呵。
我們可以總結一下,其實(shí)很簡(jiǎn)單。一共只有6個(gè)文件:config.php是配置文件。通過(guò)index.php進(jìn)入新浪微博的驗證授權頁(yè)面。同意授權后,返回callback.php頁(yè)面,點(diǎn)擊進(jìn)入。我的微博,去微博發(fā)布和列表頁(yè)weibolist.php,然后發(fā)布微博,就OK了。剩下的文件weibooauth.php是一個(gè)類(lèi)文件,里面有很多類(lèi)和函數,都是前面用到的。如果你有興趣,你可以研究它,但你可以忽略它。還有一個(gè)什么都不知道的.DS_Stor,打開(kāi)就是亂碼,我也不管,估計沒(méi)用。
另外提醒注意頁(yè)面的編碼格式,如有亂碼請耐心調試。
本文轉載自:
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(QQ登錄OAuth2.0,PHP,Java等多個(gè)版本的SDK)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 70 次瀏覽 ? 2022-02-06 17:17
內容
1.什么是“QQ登錄OAuth2.0”
OAuth:OAuth(開(kāi)放授權)是一種開(kāi)放標準,允許用戶(hù)授權第三方網(wǎng)站訪(fǎng)問(wèn)他們存儲在另一個(gè)服務(wù)提供商上的信息,而無(wú)需向第三方提供用戶(hù)名和密碼網(wǎng)站或共享所有他們的數據。
QQ登錄OAuth2.0:對于用戶(hù)相關(guān)的OpenAPI(如獲取用戶(hù)信息、動(dòng)態(tài)同步、照片、日志、分享等),為了保護用戶(hù)數據的安全和隱私,第三方< @網(wǎng)站 訪(fǎng)問(wèn)用戶(hù) 訪(fǎng)問(wèn)數據前需要明確要求用戶(hù)授權。
QQ登錄OAuth2.0使用OAuth2.0標準協(xié)議對用戶(hù)進(jìn)行認證,獲取用戶(hù)授權。與之前的 OAuth1.0 協(xié)議相比,認證過(guò)程更簡(jiǎn)單、更安全。
因此,請使用 OAuth 1.0 協(xié)議的 網(wǎng)站 升級到 OAuth 2.0 協(xié)議。升級方法請參考 OAuth1.0 升級到 OAuth2.0 指南。
尖端:
如果想擴展對OAuth2.0開(kāi)放標準的閱讀,請參考:OAuth標準(英文)| OAuth 維基百科(中文)
2.QQ登錄OAuth2.0訪(fǎng)問(wèn)方式
QQ登錄OAuth2.0支持網(wǎng)站訪(fǎng)問(wèn)和手機應用訪(fǎng)問(wèn)。
網(wǎng)站可以通過(guò)以下兩種方式訪(fǎng)問(wèn)??:
?。?)使用QQ互聯(lián)網(wǎng)提供的SDK包,用戶(hù)體驗統一,只需要修改少量代碼,無(wú)需了解驗證和授權流程,可以使用此方法適用于網(wǎng)站和需要快速訪(fǎng)問(wèn)QQ登錄的手機應用。
QQ互聯(lián)網(wǎng)提供了JavaScript、PHP、Java等多個(gè)版本的SDK,詳情請參考:SDK下載
QQ登錄JS SDK見(jiàn):JS SDK使用說(shuō)明
?。?)根據QQ登錄OAuth2.0協(xié)議,自行開(kāi)發(fā),此方式定制化程度高,網(wǎng)站及需要與現有系統集成的移動(dòng)應用可以選擇這種方法。
參見(jiàn):OAuth2.0 開(kāi)發(fā)文檔
可以通過(guò)兩種方式訪(fǎng)問(wèn)??移動(dòng)應用程序開(kāi)發(fā):
(1)使用QQ互聯(lián)網(wǎng)提供的iOS、Android等平臺的SDK包,用戶(hù)體驗統一,只需要修改少量代碼,無(wú)需了解驗證授權需要快速訪(fǎng)問(wèn)QQ登錄的應用可以選擇這種方式。
iOS和Android版本的SDK都支持網(wǎng)頁(yè)視圖和瀏覽器模式,即支持跳轉到手機瀏覽器進(jìn)行QQ登錄和驗證過(guò)程。開(kāi)發(fā)者可以在SDK包中選擇瀏覽器模式,但是瀏覽器模式用戶(hù)跳轉很多,所以不推薦使用。
見(jiàn):SDK下載
?。?)根據QQ登錄OAuth2.0協(xié)議,自行開(kāi)發(fā),該方式定制化程度高,移動(dòng)應用需要與現有系統集成可以選擇該方式。
建議移動(dòng)應用使用webview打開(kāi)登錄頁(yè)面。登錄成功后獲取accesstoken和openid,關(guān)閉webview控件。用戶(hù)體驗更好。
參見(jiàn):OAuth2.0 開(kāi)發(fā)文檔
對于A(yíng)ndroid2.1以下的版本,訪(fǎng)問(wèn)https時(shí)會(huì )出現簽名證書(shū)驗證的問(wèn)題,解決方法可以看這里。
3.QQ登錄OAuth2.0整體處理流程
QQ登錄OAuth2.0整體處理流程如下:
Step1:申請訪(fǎng)問(wèn),獲取appid和apikey;
Step2:開(kāi)發(fā)應用并設置協(xié)作者賬號,用于測試和聯(lián)調;
Step3:放置QQ登錄按鈕;
Step4:通過(guò)用戶(hù)登錄驗證和授權獲取Access Token;
Step5:通過(guò)Access Token獲取用戶(hù)的OpenID;
Step6:調用OpenAPI請求訪(fǎng)問(wèn)或修改用戶(hù)授權的資源。
4.QQ登錄OAuth2.0開(kāi)發(fā)說(shuō)明
開(kāi)發(fā)者需要根據騰訊提供的 UI 規范、請求描述、接口描述,開(kāi)發(fā) UI 和代碼。
有關(guān)詳細信息,請參閱 OAuth2.0 開(kāi)發(fā)文檔。
以上信息是否解決了您的問(wèn)題?
為了讓我們更有效地優(yōu)化我們的數據庫并有針對性地改進(jìn)我們的服務(wù),我們需要您進(jìn)一步反饋:
提交成功!
非常感謝您的反饋,我們會(huì )繼續努力讓它變得更好!
提交成功!
感謝您的批評和建議,我們將進(jìn)行針對性的優(yōu)化,為您提供更好的服務(wù)。
開(kāi)放平臺與您一起成長(cháng)!
取自“%E7%AE%80%E4%BB%8B” 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(QQ登錄OAuth2.0,PHP,Java等多個(gè)版本的SDK)
內容
1.什么是“QQ登錄OAuth2.0”
OAuth:OAuth(開(kāi)放授權)是一種開(kāi)放標準,允許用戶(hù)授權第三方網(wǎng)站訪(fǎng)問(wèn)他們存儲在另一個(gè)服務(wù)提供商上的信息,而無(wú)需向第三方提供用戶(hù)名和密碼網(wǎng)站或共享所有他們的數據。
QQ登錄OAuth2.0:對于用戶(hù)相關(guān)的OpenAPI(如獲取用戶(hù)信息、動(dòng)態(tài)同步、照片、日志、分享等),為了保護用戶(hù)數據的安全和隱私,第三方< @網(wǎng)站 訪(fǎng)問(wèn)用戶(hù) 訪(fǎng)問(wèn)數據前需要明確要求用戶(hù)授權。
QQ登錄OAuth2.0使用OAuth2.0標準協(xié)議對用戶(hù)進(jìn)行認證,獲取用戶(hù)授權。與之前的 OAuth1.0 協(xié)議相比,認證過(guò)程更簡(jiǎn)單、更安全。
因此,請使用 OAuth 1.0 協(xié)議的 網(wǎng)站 升級到 OAuth 2.0 協(xié)議。升級方法請參考 OAuth1.0 升級到 OAuth2.0 指南。
尖端:
如果想擴展對OAuth2.0開(kāi)放標準的閱讀,請參考:OAuth標準(英文)| OAuth 維基百科(中文)
2.QQ登錄OAuth2.0訪(fǎng)問(wèn)方式
QQ登錄OAuth2.0支持網(wǎng)站訪(fǎng)問(wèn)和手機應用訪(fǎng)問(wèn)。
網(wǎng)站可以通過(guò)以下兩種方式訪(fǎng)問(wèn)??:
?。?)使用QQ互聯(lián)網(wǎng)提供的SDK包,用戶(hù)體驗統一,只需要修改少量代碼,無(wú)需了解驗證和授權流程,可以使用此方法適用于網(wǎng)站和需要快速訪(fǎng)問(wèn)QQ登錄的手機應用。
QQ互聯(lián)網(wǎng)提供了JavaScript、PHP、Java等多個(gè)版本的SDK,詳情請參考:SDK下載
QQ登錄JS SDK見(jiàn):JS SDK使用說(shuō)明
?。?)根據QQ登錄OAuth2.0協(xié)議,自行開(kāi)發(fā),此方式定制化程度高,網(wǎng)站及需要與現有系統集成的移動(dòng)應用可以選擇這種方法。
參見(jiàn):OAuth2.0 開(kāi)發(fā)文檔
可以通過(guò)兩種方式訪(fǎng)問(wèn)??移動(dòng)應用程序開(kāi)發(fā):
(1)使用QQ互聯(lián)網(wǎng)提供的iOS、Android等平臺的SDK包,用戶(hù)體驗統一,只需要修改少量代碼,無(wú)需了解驗證授權需要快速訪(fǎng)問(wèn)QQ登錄的應用可以選擇這種方式。
iOS和Android版本的SDK都支持網(wǎng)頁(yè)視圖和瀏覽器模式,即支持跳轉到手機瀏覽器進(jìn)行QQ登錄和驗證過(guò)程。開(kāi)發(fā)者可以在SDK包中選擇瀏覽器模式,但是瀏覽器模式用戶(hù)跳轉很多,所以不推薦使用。
見(jiàn):SDK下載
?。?)根據QQ登錄OAuth2.0協(xié)議,自行開(kāi)發(fā),該方式定制化程度高,移動(dòng)應用需要與現有系統集成可以選擇該方式。
建議移動(dòng)應用使用webview打開(kāi)登錄頁(yè)面。登錄成功后獲取accesstoken和openid,關(guān)閉webview控件。用戶(hù)體驗更好。
參見(jiàn):OAuth2.0 開(kāi)發(fā)文檔
對于A(yíng)ndroid2.1以下的版本,訪(fǎng)問(wèn)https時(shí)會(huì )出現簽名證書(shū)驗證的問(wèn)題,解決方法可以看這里。
3.QQ登錄OAuth2.0整體處理流程
QQ登錄OAuth2.0整體處理流程如下:
Step1:申請訪(fǎng)問(wèn),獲取appid和apikey;
Step2:開(kāi)發(fā)應用并設置協(xié)作者賬號,用于測試和聯(lián)調;
Step3:放置QQ登錄按鈕;
Step4:通過(guò)用戶(hù)登錄驗證和授權獲取Access Token;
Step5:通過(guò)Access Token獲取用戶(hù)的OpenID;
Step6:調用OpenAPI請求訪(fǎng)問(wèn)或修改用戶(hù)授權的資源。
4.QQ登錄OAuth2.0開(kāi)發(fā)說(shuō)明
開(kāi)發(fā)者需要根據騰訊提供的 UI 規范、請求描述、接口描述,開(kāi)發(fā) UI 和代碼。
有關(guān)詳細信息,請參閱 OAuth2.0 開(kāi)發(fā)文檔。
以上信息是否解決了您的問(wèn)題?
為了讓我們更有效地優(yōu)化我們的數據庫并有針對性地改進(jìn)我們的服務(wù),我們需要您進(jìn)一步反饋:
提交成功!
非常感謝您的反饋,我們會(huì )繼續努力讓它變得更好!
提交成功!
感謝您的批評和建議,我們將進(jìn)行針對性的優(yōu)化,為您提供更好的服務(wù)。
開(kāi)放平臺與您一起成長(cháng)!
取自“%E7%AE%80%E4%BB%8B”
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(PHP下通過(guò)API實(shí)現與新浪微博同步應用測試好多次)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 79 次瀏覽 ? 2022-02-05 20:20
(轉貼) PHP下通過(guò)API與新浪微博同步
今天下午做了一個(gè)新浪微博同步應用,測試了很多次,終于成功了。說(shuō)說(shuō)我的配置過(guò)程吧。歡迎做客我的新浪微博!
首先,你必須有一個(gè)新浪微博賬號。如果你沒(méi)有,你可以注冊一個(gè)。然后你就可以成為一名開(kāi)發(fā)人員??梢渣c(diǎn)擊微博賬號,也可以直接輸入網(wǎng)址:選擇我是開(kāi)發(fā)者,選擇創(chuàng )建應用,填寫(xiě)開(kāi)發(fā)。用戶(hù)信息,成功后獲取你的APPKEY和APPSECRET,復制并保存。
然后,去下載SDK文檔,選擇PHP語(yǔ)言,查看“通過(guò)OAuth認證方式”。這就是我使用的。點(diǎn)擊下面的鏈接下載并解壓到本地。
第三步,開(kāi)始測試。將解壓后的 weobodemo 文件夾復制到 test 目錄下,也就是你的站點(diǎn)目錄。您必須提前配置虛擬域名。不知道的可以參考我的另一篇文章文章,使用apache配置一個(gè)獨立的虛擬域名。
weibodemo文件夾下有一個(gè)配置文件config.php。打開(kāi)后你就知道該怎么做了。在里面寫(xiě)下你的 APPKEY 和 APPSECRET。在瀏覽器中打開(kāi)這一層目錄,自動(dòng)運行index.php文件,無(wú)需贅述。
此時(shí)你會(huì )發(fā)現出錯了:Notice:Undefinedindex:SCRIPT_URIinD:\www\weibodemo\index.phponline13
打開(kāi)index.php發(fā)現$_SERVER['SCRIPT_URI'],$_SERVER的參數根本沒(méi)有這個(gè)SCRIPT_URI,忽略它,點(diǎn)擊下面的鏈接,然后報錯:對不起,那個(gè)頁(yè)面不存在!
至此,估計很多人都會(huì )放棄,一時(shí)之間不知所措。其實(shí),不要把新浪微博寫(xiě)的關(guān)于應用開(kāi)發(fā)的文章看的那么深,一般人都能看懂。仔細查看 index.php。剛才點(diǎn)擊的鏈接地址是由WeiboOAuth類(lèi)中的getAuthorizeURL方法生成的,和下一個(gè)回調函數相關(guān),就是callback.php文件。
由此我們不難想到這個(gè)過(guò)程:首先獲取本地配置文件config.php中的APPKEY和APPSECRET,然后我們要驗證APPKEY是否合法,并詢(xún)問(wèn)我們是否授權應用更新微博同步,如果條件成立,則通過(guò)callback.php返回本地,我們可以在這個(gè)回調頁(yè)面寫(xiě)微博,最后點(diǎn)擊發(fā)布,從新浪官方微博登錄,就可以看到剛剛發(fā)送的消息文章 ,以下應標記為“來(lái)自xxx”
這個(gè)道理不難理解。把$_SERVER['SCRIPT_URI']改成我們本地的地址,就是它所在目錄的虛擬域名的地址,這樣就可以返回callback.php,這樣就找不到頁(yè)面了。錯誤的。比如:我的本地虛擬凹陷是這樣的,知道文件夾d:/www/,我的weibodemo文件夾放在/www/下,那我改$_SERVER['SCRIPT_URI']連接下面的/callback.php就可以了.
這樣你就可以在顯示“授權完成”后點(diǎn)擊進(jìn)入你的微博界面weebolist.php。進(jìn)入后你會(huì )驚訝:挺粗糙的,沒(méi)有風(fēng)格,簡(jiǎn)單的html表單,哈哈,新浪微博的程序員怎么這么懶。趕緊發(fā)個(gè)微博,測試一下,激動(dòng),呵呵。
我們可以總結一下,其實(shí)很簡(jiǎn)單。一共只有6個(gè)文件:config.php是配置文件。通過(guò)index.php進(jìn)入新浪微博的驗證授權頁(yè)面。同意授權后,返回callback.php頁(yè)面,點(diǎn)擊進(jìn)入。我的微博,去微博發(fā)布和列表頁(yè)weibolist.php,然后發(fā)布微博,就OK了。剩下的文件weibooauth.php是一個(gè)類(lèi)文件,里面有很多類(lèi)和函數,都是之前用到的。如果你有興趣,你可以研究它,但你可以忽略它。還有一個(gè)我一無(wú)所知的 .DS_Stor。打開(kāi)就是亂碼,我不在乎。估計沒(méi)用。
另外提醒大家注意頁(yè)面的編碼格式,如果出現亂碼請耐心調試。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(PHP下通過(guò)API實(shí)現與新浪微博同步應用測試好多次)
(轉貼) PHP下通過(guò)API與新浪微博同步
今天下午做了一個(gè)新浪微博同步應用,測試了很多次,終于成功了。說(shuō)說(shuō)我的配置過(guò)程吧。歡迎做客我的新浪微博!
首先,你必須有一個(gè)新浪微博賬號。如果你沒(méi)有,你可以注冊一個(gè)。然后你就可以成為一名開(kāi)發(fā)人員??梢渣c(diǎn)擊微博賬號,也可以直接輸入網(wǎng)址:選擇我是開(kāi)發(fā)者,選擇創(chuàng )建應用,填寫(xiě)開(kāi)發(fā)。用戶(hù)信息,成功后獲取你的APPKEY和APPSECRET,復制并保存。
然后,去下載SDK文檔,選擇PHP語(yǔ)言,查看“通過(guò)OAuth認證方式”。這就是我使用的。點(diǎn)擊下面的鏈接下載并解壓到本地。
第三步,開(kāi)始測試。將解壓后的 weobodemo 文件夾復制到 test 目錄下,也就是你的站點(diǎn)目錄。您必須提前配置虛擬域名。不知道的可以參考我的另一篇文章文章,使用apache配置一個(gè)獨立的虛擬域名。
weibodemo文件夾下有一個(gè)配置文件config.php。打開(kāi)后你就知道該怎么做了。在里面寫(xiě)下你的 APPKEY 和 APPSECRET。在瀏覽器中打開(kāi)這一層目錄,自動(dòng)運行index.php文件,無(wú)需贅述。
此時(shí)你會(huì )發(fā)現出錯了:Notice:Undefinedindex:SCRIPT_URIinD:\www\weibodemo\index.phponline13
打開(kāi)index.php發(fā)現$_SERVER['SCRIPT_URI'],$_SERVER的參數根本沒(méi)有這個(gè)SCRIPT_URI,忽略它,點(diǎn)擊下面的鏈接,然后報錯:對不起,那個(gè)頁(yè)面不存在!
至此,估計很多人都會(huì )放棄,一時(shí)之間不知所措。其實(shí),不要把新浪微博寫(xiě)的關(guān)于應用開(kāi)發(fā)的文章看的那么深,一般人都能看懂。仔細查看 index.php。剛才點(diǎn)擊的鏈接地址是由WeiboOAuth類(lèi)中的getAuthorizeURL方法生成的,和下一個(gè)回調函數相關(guān),就是callback.php文件。
由此我們不難想到這個(gè)過(guò)程:首先獲取本地配置文件config.php中的APPKEY和APPSECRET,然后我們要驗證APPKEY是否合法,并詢(xún)問(wèn)我們是否授權應用更新微博同步,如果條件成立,則通過(guò)callback.php返回本地,我們可以在這個(gè)回調頁(yè)面寫(xiě)微博,最后點(diǎn)擊發(fā)布,從新浪官方微博登錄,就可以看到剛剛發(fā)送的消息文章 ,以下應標記為“來(lái)自xxx”
這個(gè)道理不難理解。把$_SERVER['SCRIPT_URI']改成我們本地的地址,就是它所在目錄的虛擬域名的地址,這樣就可以返回callback.php,這樣就找不到頁(yè)面了。錯誤的。比如:我的本地虛擬凹陷是這樣的,知道文件夾d:/www/,我的weibodemo文件夾放在/www/下,那我改$_SERVER['SCRIPT_URI']連接下面的/callback.php就可以了.
這樣你就可以在顯示“授權完成”后點(diǎn)擊進(jìn)入你的微博界面weebolist.php。進(jìn)入后你會(huì )驚訝:挺粗糙的,沒(méi)有風(fēng)格,簡(jiǎn)單的html表單,哈哈,新浪微博的程序員怎么這么懶。趕緊發(fā)個(gè)微博,測試一下,激動(dòng),呵呵。
我們可以總結一下,其實(shí)很簡(jiǎn)單。一共只有6個(gè)文件:config.php是配置文件。通過(guò)index.php進(jìn)入新浪微博的驗證授權頁(yè)面。同意授權后,返回callback.php頁(yè)面,點(diǎn)擊進(jìn)入。我的微博,去微博發(fā)布和列表頁(yè)weibolist.php,然后發(fā)布微博,就OK了。剩下的文件weibooauth.php是一個(gè)類(lèi)文件,里面有很多類(lèi)和函數,都是之前用到的。如果你有興趣,你可以研究它,但你可以忽略它。還有一個(gè)我一無(wú)所知的 .DS_Stor。打開(kāi)就是亂碼,我不在乎。估計沒(méi)用。
另外提醒大家注意頁(yè)面的編碼格式,如果出現亂碼請耐心調試。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(聯(lián)合第三方平臺登錄接入,初次接觸開(kāi)放平臺和AppSecret5 )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 62 次瀏覽 ? 2022-02-05 20:17
)
最近做了一個(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è)appkey和一個(gè)App Secret。這些是入口。您必須先獲得這兩個(gè),然后才能進(jìn)行下一個(gè)訪(fǎng)問(wèn)工作。
4、輸入完善個(gè)人信息后,必須完成身份驗證審核。審核完成后,新浪開(kāi)放平臺會(huì )給出appkey和App Secret。
5、接下來(lái)就是如何使用appkey和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)如下:
我們之前申請的appkey和App Secret就派上用場(chǎng)了。這里的client_ID為appkey,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"),至于為什么,請看這里的接口文檔說(shuō)明使用 oauth.authorize
假設我們這里沒(méi)有回調地址,配置文件中的redirect_URI為空。運行后會(huì )自動(dòng)打開(kāi)瀏覽器運行測試,顯示如下:
此時(shí)的URL地址為:
這說(shuō)明我的appkey和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和域名,我在局域網(wǎng)玩的時(shí)候隨便填,但是不能用localhost代替127.0.0.1,這里是按照配置要求做的,這個(gè)配置的要求很?chē)栏瘢?br /> 尤其是下面的應用圖標比較麻煩。完成后,您可以提交它們以供審核。
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();*/
查看全部
使用新浪微博開(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è)appkey和一個(gè)App Secret。這些是入口。您必須先獲得這兩個(gè),然后才能進(jìn)行下一個(gè)訪(fǎng)問(wèn)工作。
4、輸入完善個(gè)人信息后,必須完成身份驗證審核。審核完成后,新浪開(kāi)放平臺會(huì )給出appkey和App Secret。
5、接下來(lái)就是如何使用appkey和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)如下:

我們之前申請的appkey和App Secret就派上用場(chǎng)了。這里的client_ID為appkey,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"),至于為什么,請看這里的接口文檔說(shuō)明使用 oauth.authorize
假設我們這里沒(méi)有回調地址,配置文件中的redirect_URI為空。運行后會(huì )自動(dòng)打開(kāi)瀏覽器運行測試,顯示如下:

此時(shí)的URL地址為:
這說(shuō)明我的appkey和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和域名,我在局域網(wǎng)玩的時(shí)候隨便填,但是不能用localhost代替127.0.0.1,這里是按照配置要求做的,這個(gè)配置的要求很?chē)栏瘢?br /> 尤其是下面的應用圖標比較麻煩。完成后,您可以提交它們以供審核。
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();*/

使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何獲取AccessToken以及如何使用新浪微博API的使用方式)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 78 次瀏覽 ? 2022-02-05 20:16
因為畢業(yè)項目需要用到微博數據采集,所以獲取微博數據的方式主要有兩種:基于官方API和基于網(wǎng)絡(luò )爬蟲(chóng)。讓我們看看這些天如何使用官方API。比較麻煩的是oauth2的驗證,今天看到一個(gè)帖子,實(shí)踐了一下API的使用方法,轉載過(guò)來(lái)看看。
轉載至:
使用新浪微博API的前提是在新浪微博開(kāi)放平臺上注冊一個(gè)應用,獲取App Key和App Secret,然后根據這兩個(gè)獲取Access Token。下面詳細介紹如何獲取Access Token以及如何使用新浪微博提供的API。
一、獲取訪(fǎng)問(wèn)令牌
1、進(jìn)入新浪微博開(kāi)放平臺,進(jìn)入應用開(kāi)發(fā),選擇創(chuàng )建應用,這里我選擇“web應用”
2、填寫(xiě)申請的基本信息
隨便填什么,點(diǎn)擊“創(chuàng )建”,就可以創(chuàng )建成功了!
創(chuàng )建成功后,可以查看應用信息。您需要的主要是 App Key 和 App Secret。
3、添加授權回調頁(yè)面
選擇剛剛創(chuàng )建的應用,進(jìn)入應用信息,選擇高級信息,添加授權回調頁(yè)面。
這必須添加。如果回調頁(yè)面沒(méi)有被授權,則無(wú)法獲取Access Token,必須保證回調頁(yè)面的URL是可訪(fǎng)問(wèn)的。
4、獲取新浪微博SDK包
在新浪微博開(kāi)放平臺,選擇文檔->資源下載->SDK下載,我選擇JavaSDK的版本。下載完成后,解壓并將項目導入Eclipse。
可以查看文檔:readme.txt,內容為:
[清楚的]
請先填寫(xiě)相關(guān)配置:在Config.properties中client_ID:appkey client_SERCRET:app_secret redirect_URI:回調地址
即需要配置運行項目的前提。
5、配置SDK開(kāi)發(fā)包
打開(kāi) Config.properties 文件(在 src 目錄中)
[清楚的]
client_ID= client_SERCRET= redirect_URI= baseURL= accessTokenURL= authorizeURL= rmURL=
您需要填寫(xiě)client_ID、client_SERCRET、redirect_URI,這些必須與您的應用程序相對應。格式與以下相同。不要放雙引號,不要在末尾放分號。
6、獲取訪(fǎng)問(wèn)令牌
打開(kāi)示例資源文件夾,weibo4j.examples.oauth2文件夾中的OAuth4Code.java
放上代碼:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code",args[1],args[2])); System.out.println(oauth.authorize("code",args[1],args[2]));
變成:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code","","")); System.out.println(oauth.authorize("code","",""));
即刪除 args 參數。
然后選擇run as Java Application,打開(kāi)瀏覽器,也就是打開(kāi)你填寫(xiě)的回調地址,注意此時(shí)的url,最后一部分是code=XXXXXXXXXXXXXXXXXXXXX。復制此代碼的值。查看 Eclipse 的控制臺窗口:
輸入您剛剛獲得的代碼值,然后按 Enter。
至此,您已經(jīng)獲得了access_token值和uid值,現在可以使用access_token運行示例中的程序了。注意access_token的取值有一定的時(shí)效性。access_token過(guò)期后需要重新申請,即重復第6步,access_token的值不會(huì )每次都改變。
二、運行示例程序
我在weibo4j.examples.timeline中選擇了ShowStatus.java。將access_token替換為剛剛獲取的值,id指的是微博的ID,運行它,可以得到微博的信息和用戶(hù)的信息。注意這里的第二個(gè)參數id,必須是具體微博的id,而不是uid?。?!
其他程序也是如此。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何獲取AccessToken以及如何使用新浪微博API的使用方式)
因為畢業(yè)項目需要用到微博數據采集,所以獲取微博數據的方式主要有兩種:基于官方API和基于網(wǎng)絡(luò )爬蟲(chóng)。讓我們看看這些天如何使用官方API。比較麻煩的是oauth2的驗證,今天看到一個(gè)帖子,實(shí)踐了一下API的使用方法,轉載過(guò)來(lái)看看。
轉載至:
使用新浪微博API的前提是在新浪微博開(kāi)放平臺上注冊一個(gè)應用,獲取App Key和App Secret,然后根據這兩個(gè)獲取Access Token。下面詳細介紹如何獲取Access Token以及如何使用新浪微博提供的API。
一、獲取訪(fǎng)問(wèn)令牌
1、進(jìn)入新浪微博開(kāi)放平臺,進(jìn)入應用開(kāi)發(fā),選擇創(chuàng )建應用,這里我選擇“web應用”
2、填寫(xiě)申請的基本信息
隨便填什么,點(diǎn)擊“創(chuàng )建”,就可以創(chuàng )建成功了!
創(chuàng )建成功后,可以查看應用信息。您需要的主要是 App Key 和 App Secret。
3、添加授權回調頁(yè)面
選擇剛剛創(chuàng )建的應用,進(jìn)入應用信息,選擇高級信息,添加授權回調頁(yè)面。
這必須添加。如果回調頁(yè)面沒(méi)有被授權,則無(wú)法獲取Access Token,必須保證回調頁(yè)面的URL是可訪(fǎng)問(wèn)的。
4、獲取新浪微博SDK包
在新浪微博開(kāi)放平臺,選擇文檔->資源下載->SDK下載,我選擇JavaSDK的版本。下載完成后,解壓并將項目導入Eclipse。
可以查看文檔:readme.txt,內容為:
[清楚的]
請先填寫(xiě)相關(guān)配置:在Config.properties中client_ID:appkey client_SERCRET:app_secret redirect_URI:回調地址
即需要配置運行項目的前提。
5、配置SDK開(kāi)發(fā)包
打開(kāi) Config.properties 文件(在 src 目錄中)
[清楚的]
client_ID= client_SERCRET= redirect_URI= baseURL= accessTokenURL= authorizeURL= rmURL=
您需要填寫(xiě)client_ID、client_SERCRET、redirect_URI,這些必須與您的應用程序相對應。格式與以下相同。不要放雙引號,不要在末尾放分號。
6、獲取訪(fǎng)問(wèn)令牌
打開(kāi)示例資源文件夾,weibo4j.examples.oauth2文件夾中的OAuth4Code.java
放上代碼:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code",args[1],args[2])); System.out.println(oauth.authorize("code",args[1],args[2]));
變成:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code","","")); System.out.println(oauth.authorize("code","",""));
即刪除 args 參數。
然后選擇run as Java Application,打開(kāi)瀏覽器,也就是打開(kāi)你填寫(xiě)的回調地址,注意此時(shí)的url,最后一部分是code=XXXXXXXXXXXXXXXXXXXXX。復制此代碼的值。查看 Eclipse 的控制臺窗口:
輸入您剛剛獲得的代碼值,然后按 Enter。
至此,您已經(jīng)獲得了access_token值和uid值,現在可以使用access_token運行示例中的程序了。注意access_token的取值有一定的時(shí)效性。access_token過(guò)期后需要重新申請,即重復第6步,access_token的值不會(huì )每次都改變。
二、運行示例程序
我在weibo4j.examples.timeline中選擇了ShowStatus.java。將access_token替換為剛剛獲取的值,id指的是微博的ID,運行它,可以得到微博的信息和用戶(hù)的信息。注意這里的第二個(gè)參數id,必須是具體微博的id,而不是uid?。?!
其他程序也是如此。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( 如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 82 次瀏覽 ? 2022-02-04 21:14
如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))
如何將推特信息自動(dòng)同步到新浪微博、開(kāi)心網(wǎng)、人人網(wǎng)等國內SNS網(wǎng)站,我之前介紹過(guò)一種同步方法。這種方法雖然可以實(shí)現同步功能,但是同步不是實(shí)時(shí)的。是的,時(shí)差約為一小時(shí)。這個(gè)時(shí)差是由 TwitterFeed 引起的。同時(shí),這種方法的設置比較復雜,需要多次翻轉。
于是,我開(kāi)始嘗試一種新的同步方式,開(kāi)發(fā)了一個(gè)Python程序,定時(shí)自動(dòng)讀取和同步推特信息,以簡(jiǎn)化同步過(guò)程,縮短同步時(shí)間,實(shí)現基本的實(shí)時(shí)同步功能。原來(lái)的同步流程圖是:twitter->appspot->twitterfeed->ping.fm->customurl->huotu->新浪微博,新的同步流程變成:twitter->appspot->huotu->新浪微博,步驟大大簡(jiǎn)化了,只需要在GAE上設置一個(gè)定時(shí)任務(wù)定時(shí)執行即可。
由于 GAE 支持 Cron Job 定時(shí)任務(wù),所以我們的 Python 程序可以每分鐘自動(dòng)調用一次。調用時(shí),先從推特上抓取用戶(hù)的最新消息,抓取成功后,將消息同步到地瓜火兔。然后分發(fā)到新浪微博、開(kāi)心網(wǎng)等,如果設置為每分鐘執行一次,同步時(shí)差只有一分鐘左右,基本實(shí)現了推特信息實(shí)時(shí)同步到新浪微博等SNS的功能網(wǎng)站。
我在GAE上調試了這個(gè)程序Python程序,不是很流暢。我按照官方說(shuō)明配置了 cron.yaml 文件,但是更新 Twitter.py 后,Cron Job 定時(shí)任務(wù)還是不行,后臺也看不到相關(guān)的 Cron。工作任務(wù)。
后來(lái)經(jīng)過(guò)一番研究,終于解決了GAE中Python中Cron Job調度任務(wù)的問(wèn)題。原因很簡(jiǎn)單,因為我的“Google App Engine SDK for Python”是很久以前安裝的,當時(shí)GAE不支持定時(shí)任務(wù),所以無(wú)法更新cron.yaml文件,重新下載最新版本后“Google App Engine SDK for Python”安裝后,Cron Job 計劃任務(wù)更新成功。
然而,新的問(wèn)題又來(lái)了。我發(fā)現當app調用Twitter API時(shí),失敗率非常高。幾乎有一半的情況下會(huì )提示“Rate limit exceeded. Clients may not make more than 150 requests per hour”,這讓我懷疑是不是GAE的外網(wǎng)IP很小,還有很多第三方程序在調用GAE 上的 Twitter API,導致每小時(shí)調用超過(guò) 150 次,否則,我自己的調用永遠不會(huì )有這么高的頻率,可能是因為 Twitter 沒(méi)有將 GAE IP 列入白名單,如果有一天 Twitter 不限制 GAE IP,有應該沒(méi)有問(wèn)題。
安裝說(shuō)明:
下載方法,使用TortoiseSVN查看這個(gè)SVN地址,然后,編輯app.yaml,修改為自己的appspot應用名稱(chēng),然后修改twitter.py文件最后一行,添加你的推特用戶(hù)名,喃喃火兔用戶(hù)名和密碼分別填寫(xiě),cron.yaml文件收錄定時(shí)任務(wù)設置,然后就可以按照本文方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼,就可以了發(fā)布。
發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于可以設置定時(shí)執行最少1分鐘,同步速度非???,基本可以達到即時(shí)自動(dòng)同步的效果。
() () 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
如何自動(dòng)將的Twitter信息同步到國內的新浪微博(圖))

如何將推特信息自動(dòng)同步到新浪微博、開(kāi)心網(wǎng)、人人網(wǎng)等國內SNS網(wǎng)站,我之前介紹過(guò)一種同步方法。這種方法雖然可以實(shí)現同步功能,但是同步不是實(shí)時(shí)的。是的,時(shí)差約為一小時(shí)。這個(gè)時(shí)差是由 TwitterFeed 引起的。同時(shí),這種方法的設置比較復雜,需要多次翻轉。
于是,我開(kāi)始嘗試一種新的同步方式,開(kāi)發(fā)了一個(gè)Python程序,定時(shí)自動(dòng)讀取和同步推特信息,以簡(jiǎn)化同步過(guò)程,縮短同步時(shí)間,實(shí)現基本的實(shí)時(shí)同步功能。原來(lái)的同步流程圖是:twitter->appspot->twitterfeed->ping.fm->customurl->huotu->新浪微博,新的同步流程變成:twitter->appspot->huotu->新浪微博,步驟大大簡(jiǎn)化了,只需要在GAE上設置一個(gè)定時(shí)任務(wù)定時(shí)執行即可。
由于 GAE 支持 Cron Job 定時(shí)任務(wù),所以我們的 Python 程序可以每分鐘自動(dòng)調用一次。調用時(shí),先從推特上抓取用戶(hù)的最新消息,抓取成功后,將消息同步到地瓜火兔。然后分發(fā)到新浪微博、開(kāi)心網(wǎng)等,如果設置為每分鐘執行一次,同步時(shí)差只有一分鐘左右,基本實(shí)現了推特信息實(shí)時(shí)同步到新浪微博等SNS的功能網(wǎng)站。
我在GAE上調試了這個(gè)程序Python程序,不是很流暢。我按照官方說(shuō)明配置了 cron.yaml 文件,但是更新 Twitter.py 后,Cron Job 定時(shí)任務(wù)還是不行,后臺也看不到相關(guān)的 Cron。工作任務(wù)。
后來(lái)經(jīng)過(guò)一番研究,終于解決了GAE中Python中Cron Job調度任務(wù)的問(wèn)題。原因很簡(jiǎn)單,因為我的“Google App Engine SDK for Python”是很久以前安裝的,當時(shí)GAE不支持定時(shí)任務(wù),所以無(wú)法更新cron.yaml文件,重新下載最新版本后“Google App Engine SDK for Python”安裝后,Cron Job 計劃任務(wù)更新成功。
然而,新的問(wèn)題又來(lái)了。我發(fā)現當app調用Twitter API時(shí),失敗率非常高。幾乎有一半的情況下會(huì )提示“Rate limit exceeded. Clients may not make more than 150 requests per hour”,這讓我懷疑是不是GAE的外網(wǎng)IP很小,還有很多第三方程序在調用GAE 上的 Twitter API,導致每小時(shí)調用超過(guò) 150 次,否則,我自己的調用永遠不會(huì )有這么高的頻率,可能是因為 Twitter 沒(méi)有將 GAE IP 列入白名單,如果有一天 Twitter 不限制 GAE IP,有應該沒(méi)有問(wèn)題。
安裝說(shuō)明:
下載方法,使用TortoiseSVN查看這個(gè)SVN地址,然后,編輯app.yaml,修改為自己的appspot應用名稱(chēng),然后修改twitter.py文件最后一行,添加你的推特用戶(hù)名,喃喃火兔用戶(hù)名和密碼分別填寫(xiě),cron.yaml文件收錄定時(shí)任務(wù)設置,然后就可以按照本文方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼,就可以了發(fā)布。
發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于可以設置定時(shí)執行最少1分鐘,同步速度非???,基本可以達到即時(shí)自動(dòng)同步的效果。

() ()
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(本次開(kāi)放微博渠道接口,不需要驗證網(wǎng)站地址。。)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 57 次瀏覽 ? 2022-02-02 17:05
此次開(kāi)通微博頻道界面,為廣大站長(cháng)提供了更便捷的申請方式。
不僅需要在管理后臺點(diǎn)擊應用,還可以將內容同步到微博,顯示來(lái)自自己網(wǎng)站。
無(wú)需等待開(kāi)放平臺審核,無(wú)需去微博開(kāi)放平臺申請,無(wú)需驗證網(wǎng)站地址。
新浪微博為您提供支持和開(kāi)放渠道接口,目前實(shí)現了以下功能。
發(fā)布更新文章,同時(shí)發(fā)布到微博時(shí),來(lái)源顯示為網(wǎng)站自定義的名稱(chēng),鏈接地址為本站自定義鏈接。它非常強大嗎?!
要實(shí)現這個(gè)功能,只需要簡(jiǎn)單的 3 個(gè)步驟:
【第一步】打開(kāi)管理后臺,進(jìn)入設置,滾動(dòng)至底部:設置新浪微博頻道AppKey。
【第二步】輸入站點(diǎn)名稱(chēng)和網(wǎng)站url:網(wǎng)站的名稱(chēng)將顯示為微博來(lái)源,不超過(guò)5個(gè)漢字,或10個(gè)英文/數字。url:點(diǎn)擊源后指向的網(wǎng)站網(wǎng)址,我們默認為您填寫(xiě)。
【第三步】授權此api:使用此時(shí)登錄的wp賬號對應的新浪微博賬號授權此api。
完畢!發(fā)帖文章來(lái)測試一下吧~
注意:
1. 微博默認會(huì )在站點(diǎn)名稱(chēng)后加一個(gè)_ds logo,這樣站點(diǎn)就不會(huì )和原微博注冊沖突了;
2. 僅對擁有授權微博賬號且在有效期內的用戶(hù),同步時(shí)會(huì )顯示來(lái)源;
3. 在內測期間,新浪微博只提供7天的授權,您可以在頁(yè)面更新授權。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(本次開(kāi)放微博渠道接口,不需要驗證網(wǎng)站地址。。)
此次開(kāi)通微博頻道界面,為廣大站長(cháng)提供了更便捷的申請方式。
不僅需要在管理后臺點(diǎn)擊應用,還可以將內容同步到微博,顯示來(lái)自自己網(wǎng)站。
無(wú)需等待開(kāi)放平臺審核,無(wú)需去微博開(kāi)放平臺申請,無(wú)需驗證網(wǎng)站地址。
新浪微博為您提供支持和開(kāi)放渠道接口,目前實(shí)現了以下功能。
發(fā)布更新文章,同時(shí)發(fā)布到微博時(shí),來(lái)源顯示為網(wǎng)站自定義的名稱(chēng),鏈接地址為本站自定義鏈接。它非常強大嗎?!
要實(shí)現這個(gè)功能,只需要簡(jiǎn)單的 3 個(gè)步驟:
【第一步】打開(kāi)管理后臺,進(jìn)入設置,滾動(dòng)至底部:設置新浪微博頻道AppKey。
【第二步】輸入站點(diǎn)名稱(chēng)和網(wǎng)站url:網(wǎng)站的名稱(chēng)將顯示為微博來(lái)源,不超過(guò)5個(gè)漢字,或10個(gè)英文/數字。url:點(diǎn)擊源后指向的網(wǎng)站網(wǎng)址,我們默認為您填寫(xiě)。
【第三步】授權此api:使用此時(shí)登錄的wp賬號對應的新浪微博賬號授權此api。
完畢!發(fā)帖文章來(lái)測試一下吧~
注意:
1. 微博默認會(huì )在站點(diǎn)名稱(chēng)后加一個(gè)_ds logo,這樣站點(diǎn)就不會(huì )和原微博注冊沖突了;
2. 僅對擁有授權微博賬號且在有效期內的用戶(hù),同步時(shí)會(huì )顯示來(lái)源;
3. 在內測期間,新浪微博只提供7天的授權,您可以在頁(yè)面更新授權。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何獲取AccessToken以及如何使用新浪微博API的使用方式)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 58 次瀏覽 ? 2022-02-01 17:18
因為畢業(yè)項目需要用到微博數據采集,所以獲取微博數據主要有兩種方式:基于官方API和基于網(wǎng)絡(luò )爬蟲(chóng),這幾天來(lái)看看官方API怎么用,比較麻煩是oauth2的驗證,今天看到一個(gè)帖子,實(shí)踐了一下API的使用方法,轉載過(guò)來(lái)看看。
轉載至:
使用新浪微博API的前提是在新浪微博開(kāi)放平臺上注冊一個(gè)應用,獲取App Key和App Secret,然后根據這兩個(gè)獲取Access Token。下面詳細介紹如何獲取Access Token以及如何使用新浪微博提供的API。
一、獲取訪(fǎng)問(wèn)令牌
1、進(jìn)入新浪微博開(kāi)放平臺,進(jìn)入應用開(kāi)發(fā),選擇創(chuàng )建應用,這里我選擇“web應用”
2、填寫(xiě)申請的基本信息
隨便填什么,點(diǎn)擊“創(chuàng )建”,就可以創(chuàng )建成功了!
創(chuàng )建成功后,可以查看應用信息。您需要的主要是 App Key 和 App Secret。
3、添加授權回調頁(yè)面
選擇剛剛創(chuàng )建的應用,進(jìn)入應用信息,選擇高級信息,添加授權回調頁(yè)面。
這必須添加。如果回調頁(yè)面沒(méi)有被授權,則無(wú)法獲取Access Token,必須保證回調頁(yè)面的URL是可訪(fǎng)問(wèn)的。
4、獲取新浪微博SDK包
在新浪微博開(kāi)放平臺,選擇文檔->資源下載->SDK下載,我選擇JavaSDK的版本。下載完成后,解壓并將項目導入Eclipse。
可以查看文檔:readme.txt,內容為:
[清楚的]
請先填寫(xiě)相關(guān)配置:在Config.properties中client_ID:appkey client_SERCRET:app_secret redirect_URI:回調地址
即需要配置運行項目的前提。
5、配置SDK開(kāi)發(fā)包
打開(kāi) Config.properties 文件(在 src 目錄中)
[清楚的]
client_ID= client_SERCRET= redirect_URI= baseURL= accessTokenURL= authorizeURL= rmURL=
您需要填寫(xiě)client_ID、client_SERCRET、redirect_URI,這些必須與您的應用程序相對應。格式與以下相同。不要放雙引號,不要在末尾放分號。
6、獲取訪(fǎng)問(wèn)令牌
打開(kāi)示例資源文件夾,weibo4j.examples.oauth2文件夾中的OAuth4Code.java
放上代碼:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code",args[1],args[2])); System.out.println(oauth.authorize("code",args[1],args[2]));
變成:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code","","")); System.out.println(oauth.authorize("code","",""));
即刪除 args 參數。
然后選擇run as Java Application,打開(kāi)瀏覽器,也就是打開(kāi)你填寫(xiě)的回調地址,注意此時(shí)的url,最后一部分是code=XXXXXXXXXXXXXXXXXXXXX。復制此代碼的值。查看 Eclipse 的控制臺窗口:
輸入您剛剛獲得的代碼值,然后按 Enter。
至此,您已經(jīng)獲得了access_token值和uid值,現在可以使用access_token運行示例中的程序了。注意access_token的取值有一定的時(shí)效性。access_token過(guò)期后需要重新申請,即重復第6步,access_token的值不會(huì )每次都改變。
二、運行示例程序
我在weibo4j.examples.timeline中選擇了ShowStatus.java。將access_token替換為剛剛獲取的值,id指的是微博的ID,運行它,可以得到微博的信息和用戶(hù)的信息。注意這里的第二個(gè)參數id,必須是具體微博的id,而不是uid?。?!
其他程序也是如此。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何獲取AccessToken以及如何使用新浪微博API的使用方式)
因為畢業(yè)項目需要用到微博數據采集,所以獲取微博數據主要有兩種方式:基于官方API和基于網(wǎng)絡(luò )爬蟲(chóng),這幾天來(lái)看看官方API怎么用,比較麻煩是oauth2的驗證,今天看到一個(gè)帖子,實(shí)踐了一下API的使用方法,轉載過(guò)來(lái)看看。
轉載至:
使用新浪微博API的前提是在新浪微博開(kāi)放平臺上注冊一個(gè)應用,獲取App Key和App Secret,然后根據這兩個(gè)獲取Access Token。下面詳細介紹如何獲取Access Token以及如何使用新浪微博提供的API。
一、獲取訪(fǎng)問(wèn)令牌
1、進(jìn)入新浪微博開(kāi)放平臺,進(jìn)入應用開(kāi)發(fā),選擇創(chuàng )建應用,這里我選擇“web應用”
2、填寫(xiě)申請的基本信息
隨便填什么,點(diǎn)擊“創(chuàng )建”,就可以創(chuàng )建成功了!
創(chuàng )建成功后,可以查看應用信息。您需要的主要是 App Key 和 App Secret。
3、添加授權回調頁(yè)面
選擇剛剛創(chuàng )建的應用,進(jìn)入應用信息,選擇高級信息,添加授權回調頁(yè)面。
這必須添加。如果回調頁(yè)面沒(méi)有被授權,則無(wú)法獲取Access Token,必須保證回調頁(yè)面的URL是可訪(fǎng)問(wèn)的。
4、獲取新浪微博SDK包
在新浪微博開(kāi)放平臺,選擇文檔->資源下載->SDK下載,我選擇JavaSDK的版本。下載完成后,解壓并將項目導入Eclipse。
可以查看文檔:readme.txt,內容為:
[清楚的]
請先填寫(xiě)相關(guān)配置:在Config.properties中client_ID:appkey client_SERCRET:app_secret redirect_URI:回調地址
即需要配置運行項目的前提。
5、配置SDK開(kāi)發(fā)包
打開(kāi) Config.properties 文件(在 src 目錄中)
[清楚的]
client_ID= client_SERCRET= redirect_URI= baseURL= accessTokenURL= authorizeURL= rmURL=
您需要填寫(xiě)client_ID、client_SERCRET、redirect_URI,這些必須與您的應用程序相對應。格式與以下相同。不要放雙引號,不要在末尾放分號。
6、獲取訪(fǎng)問(wèn)令牌
打開(kāi)示例資源文件夾,weibo4j.examples.oauth2文件夾中的OAuth4Code.java
放上代碼:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code",args[1],args[2])); System.out.println(oauth.authorize("code",args[1],args[2]));
變成:
[清楚的]
BareBonesBrowserLaunch.openURL(oauth.authorize("code","","")); System.out.println(oauth.authorize("code","",""));
即刪除 args 參數。
然后選擇run as Java Application,打開(kāi)瀏覽器,也就是打開(kāi)你填寫(xiě)的回調地址,注意此時(shí)的url,最后一部分是code=XXXXXXXXXXXXXXXXXXXXX。復制此代碼的值。查看 Eclipse 的控制臺窗口:
輸入您剛剛獲得的代碼值,然后按 Enter。
至此,您已經(jīng)獲得了access_token值和uid值,現在可以使用access_token運行示例中的程序了。注意access_token的取值有一定的時(shí)效性。access_token過(guò)期后需要重新申請,即重復第6步,access_token的值不會(huì )每次都改變。
二、運行示例程序
我在weibo4j.examples.timeline中選擇了ShowStatus.java。將access_token替換為剛剛獲取的值,id指的是微博的ID,運行它,可以得到微博的信息和用戶(hù)的信息。注意這里的第二個(gè)參數id,必須是具體微博的id,而不是uid?。?!
其他程序也是如此。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( +python模擬登陸新浪微博(2):)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 63 次瀏覽 ? 2022-02-01 17:07
+python模擬登陸新浪微博(2):)
上次準備用selenium + python模擬登陸新浪微博(這個(gè)方法太爛了)。最后我卡在了驗證碼鏈接。對于我這樣的菜鳥(niǎo),新浪太不友好了。完全沒(méi)有考慮到我的感受。附上模擬登錄代碼。
問(wèn)題出在獲取驗證碼圖片的環(huán)節,這里新浪不知道怎么弄。地址是一樣的,但是每次訪(fǎng)問(wèn)得到的驗證碼都不一樣,所以無(wú)法得到正確的驗證碼。本來(lái)打算用selenium截圖獲取驗證碼,交給百度獸人鑒定。我發(fā)現百度的新浪驗證碼識別準確率低的可怕。
所以,我放棄了。請改用官方提供的正確做法。這樣你就不會(huì )被封號了。還是很不錯的。官方 API 基本上是一個(gè) rest 接口。它可以很容易地調用和獲取。主要寫(xiě)在下面。如何成功獲得授權。授權完成后,可以調用新浪接口獲取數據(公開(kāi)、公平)。
官方的Api相當豐富。我主要用他們的評論,也用搜索界面。所以我認為它是完美的。
首先,要訪(fǎng)問(wèn)這些東西,你需要有一個(gè)新浪帳號。然后點(diǎn)擊:“微連接”創(chuàng )建應用程序。
創(chuàng )建完成后。您可以在“我的應用程序”中找到它:
點(diǎn)擊應用進(jìn)入后,可以看到應用的app key和App Secret。這兩個(gè)很重要,后面會(huì )用到授權。
獲得授權。這里新浪使用了一種授權機制,叫做:OAuth2.0:簡(jiǎn)單來(lái)說(shuō)就是你訪(fǎng)問(wèn)授權服務(wù)器,授權服務(wù)器給你返回一個(gè)證書(shū),然后你就可以用這個(gè)證書(shū)訪(fǎng)問(wèn)新浪的其他接口。
授權服務(wù)器相當于門(mén)衛的意思。你來(lái)到一座建筑。然后門(mén)衛給了一張身份證。之后,您進(jìn)入大樓。每次進(jìn)入房間。門(mén)口的守衛都要求你提供剛進(jìn)樓的人給你的身份證。否則,您將被拒絕入境。大概就是這個(gè)意思。
長(cháng)話(huà)短說(shuō),直接看如何獲取授權:
授權需要自己配置回調地址。需要訪(fǎng)問(wèn)。除了在參數中添加這個(gè)地址外,還需要在你的應用程序中寫(xiě)入。那是:
這里。我直接用 Flask 搭建了一個(gè)本地服務(wù)器:
然后使用內網(wǎng)穿透軟件。免費的是:natapp:
滲透出來(lái)。這樣我們就有了回調的地址。
接下來(lái)看官方API:
首先我們需要訪(fǎng)問(wèn):
這需要我們填寫(xiě)之前佩戴應用后獲取的app key和我們構建的接受回調的地址:
然后在瀏覽器中打開(kāi)這個(gè)地址:
點(diǎn)擊Authorize(我的回調函數寫(xiě)的打印代碼,所以這里直接打印代碼,地址欄也可以拿到這個(gè)代碼):
之后,我們使用新浪給出的第二個(gè)url:
此 url 需要使用 post 方法提交。
代碼也有自己的應用密鑰和應用秘密。
填寫(xiě)后提交:
您將獲得 json 格式的返回:
{“access_token”:“asdasdasdadasdasdsadda”,“remind_in”:“1233566966”,“expires_in”:1233566966,“uid”:“”,“isRealName”:“true”}
這就是我們最終的結果。代表我們授權成功。
然后訪(fǎng)問(wèn)界面很容易。我們只保存 access_token。每次訪(fǎng)問(wèn)調用界面時(shí)都可以帶上這個(gè)。
接口測試可以使用谷歌的postman,或者新浪提供的測試工具
新浪提供了一個(gè)接口測試工具,可以直接在線(xiàn)測試接口:這里我從之前爬過(guò)的微博列表中選擇了一個(gè)ID為文章。請求后得到新浪返回的評論結果的json字符串。
大概一目了然(一萬(wàn)多行的字符串): 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
+python模擬登陸新浪微博(2):)
上次準備用selenium + python模擬登陸新浪微博(這個(gè)方法太爛了)。最后我卡在了驗證碼鏈接。對于我這樣的菜鳥(niǎo),新浪太不友好了。完全沒(méi)有考慮到我的感受。附上模擬登錄代碼。
問(wèn)題出在獲取驗證碼圖片的環(huán)節,這里新浪不知道怎么弄。地址是一樣的,但是每次訪(fǎng)問(wèn)得到的驗證碼都不一樣,所以無(wú)法得到正確的驗證碼。本來(lái)打算用selenium截圖獲取驗證碼,交給百度獸人鑒定。我發(fā)現百度的新浪驗證碼識別準確率低的可怕。
所以,我放棄了。請改用官方提供的正確做法。這樣你就不會(huì )被封號了。還是很不錯的。官方 API 基本上是一個(gè) rest 接口。它可以很容易地調用和獲取。主要寫(xiě)在下面。如何成功獲得授權。授權完成后,可以調用新浪接口獲取數據(公開(kāi)、公平)。
官方的Api相當豐富。我主要用他們的評論,也用搜索界面。所以我認為它是完美的。
首先,要訪(fǎng)問(wèn)這些東西,你需要有一個(gè)新浪帳號。然后點(diǎn)擊:“微連接”創(chuàng )建應用程序。
創(chuàng )建完成后。您可以在“我的應用程序”中找到它:
點(diǎn)擊應用進(jìn)入后,可以看到應用的app key和App Secret。這兩個(gè)很重要,后面會(huì )用到授權。
獲得授權。這里新浪使用了一種授權機制,叫做:OAuth2.0:簡(jiǎn)單來(lái)說(shuō)就是你訪(fǎng)問(wèn)授權服務(wù)器,授權服務(wù)器給你返回一個(gè)證書(shū),然后你就可以用這個(gè)證書(shū)訪(fǎng)問(wèn)新浪的其他接口。
授權服務(wù)器相當于門(mén)衛的意思。你來(lái)到一座建筑。然后門(mén)衛給了一張身份證。之后,您進(jìn)入大樓。每次進(jìn)入房間。門(mén)口的守衛都要求你提供剛進(jìn)樓的人給你的身份證。否則,您將被拒絕入境。大概就是這個(gè)意思。
長(cháng)話(huà)短說(shuō),直接看如何獲取授權:
授權需要自己配置回調地址。需要訪(fǎng)問(wèn)。除了在參數中添加這個(gè)地址外,還需要在你的應用程序中寫(xiě)入。那是:
這里。我直接用 Flask 搭建了一個(gè)本地服務(wù)器:
然后使用內網(wǎng)穿透軟件。免費的是:natapp:
滲透出來(lái)。這樣我們就有了回調的地址。
接下來(lái)看官方API:
首先我們需要訪(fǎng)問(wèn):
這需要我們填寫(xiě)之前佩戴應用后獲取的app key和我們構建的接受回調的地址:
然后在瀏覽器中打開(kāi)這個(gè)地址:
點(diǎn)擊Authorize(我的回調函數寫(xiě)的打印代碼,所以這里直接打印代碼,地址欄也可以拿到這個(gè)代碼):
之后,我們使用新浪給出的第二個(gè)url:
此 url 需要使用 post 方法提交。
代碼也有自己的應用密鑰和應用秘密。
填寫(xiě)后提交:
您將獲得 json 格式的返回:
{“access_token”:“asdasdasdadasdasdsadda”,“remind_in”:“1233566966”,“expires_in”:1233566966,“uid”:“”,“isRealName”:“true”}
這就是我們最終的結果。代表我們授權成功。
然后訪(fǎng)問(wèn)界面很容易。我們只保存 access_token。每次訪(fǎng)問(wèn)調用界面時(shí)都可以帶上這個(gè)。
接口測試可以使用谷歌的postman,或者新浪提供的測試工具
新浪提供了一個(gè)接口測試工具,可以直接在線(xiàn)測試接口:這里我從之前爬過(guò)的微博列表中選擇了一個(gè)ID為文章。請求后得到新浪返回的評論結果的json字符串。
大概一目了然(一萬(wàn)多行的字符串):
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博API開(kāi)發(fā)的資源比較多,一個(gè)開(kāi)發(fā)者下載地址)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 59 次瀏覽 ? 2022-02-01 06:04
現在玩微博的人越來(lái)越多,關(guān)于微博的第三方應用開(kāi)??發(fā)也越來(lái)越多。一不小心接觸到新浪微博API開(kāi)發(fā)。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺,網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。
在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但是還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的使用PHP開(kāi)發(fā)新浪微博API。內容組織和解釋?zhuān)?br /> 新浪微博API開(kāi)發(fā)準備
首先,去新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
下載完成后,放到自己的開(kāi)發(fā)環(huán)境中,解壓。演示程序也收錄在其中。我們可以參考它的示例程序來(lái)編寫(xiě)。
新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用程序使用 OAuth 授權。新浪微博開(kāi)放平臺對OAuth授權流程有清晰完整的介紹。大家可以去查一下,我會(huì )從例子開(kāi)發(fā)的角度來(lái)介紹和講解。
1.先獲取一個(gè)未授權的Request Token
$o = new WeiboOAuth( WB_AKEY , WB_SKEY );
$keys = $o->getRequestToken();
//echo($keys['oauth_token'].' : '.$keys['oauth_token_secret']);
我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
獲取到授權值后,我們就可以使用上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )存儲在$key數組變量中。
2.然后請求用戶(hù)授權Token
$_SESSION['keys'] = $keys;
aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false , '#39;);
拿到未授權的Request Token值后,我們就可以使用上面的代碼開(kāi)始準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到頁(yè)面。授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后,會(huì )自動(dòng)跳轉回你在最后一個(gè)參數中設置的回調頁(yè)面:你可以將此鏈接設置為上一頁(yè),這樣授權完成后,會(huì )再次自動(dòng)跳轉回來(lái)。
需要注意的是,需要設置會(huì )話(huà)密鑰的值,這是獲取下面授權的Access Token所必需的。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯,一般是這個(gè)問(wèn)題。你沒(méi)有設置 session keys 的值,當然下面無(wú)法獲取 Access Token 的值。必須記住這一點(diǎn)。
3.用戶(hù)最后授權的Access Token
$o = new WeiboOAuth( WB_AKEY ,
WB_SKEY ,
$_SESSION['keys']['oauth_token'] ,
$_SESSION['keys']['oauth_token_secret'] );
$last_key = $o->getAccessToken( $_REQUEST['oauth_verifier'] ) ;
回聲($last_key['oauth_token']);
上述代碼最終得到用戶(hù)授權的Access Token,一共有兩個(gè)值,存放在$last_key數組變量中。我們還可以看到,最后兩個(gè)參數是我們之前設置的會(huì )話(huà)值。至此基本完成,這就是一個(gè)完整的新浪微博用戶(hù)授權流程。
授權完成后工作
授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里簡(jiǎn)單介紹一下獲取最新微博記錄的接口,其他類(lèi)似。
獲取新浪微博最新信息的API接口函數為:public_timeline()。示例代碼如下:
//獲取前20條最新更新的公眾微博消息
$c = new WeiboClient( WB_AKEY ,
WB_SKEY ,
$oauth_token ,
$oauth_token_secret );
$msg = $c->public_timeline();
if ($msg === false || $msg === null){
echo "發(fā)生錯誤";
返回假;
}
if (isset($msg['error_code']) && isset($msg['error'])){
echo ('Error_code: '.$msg['error_code'].'; 錯誤: '.$msg['error'] );
返回假;
}
print_r($msg);
通常我們拿到用戶(hù)授權的Access Token值后,保存在我們的用戶(hù)表中,對應我們應用中的賬號。之后,我們就不需要每次都去新浪微博的各個(gè)api接口了。認證。
上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里使用php進(jìn)行開(kāi)發(fā),所以使用Json格式數據有先天優(yōu)勢。如果返回Json格式數據,直接使用php函數json_decode()可以轉換成php常用的數組格式。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博API開(kāi)發(fā)的資源比較多,一個(gè)開(kāi)發(fā)者下載地址)
現在玩微博的人越來(lái)越多,關(guān)于微博的第三方應用開(kāi)??發(fā)也越來(lái)越多。一不小心接觸到新浪微博API開(kāi)發(fā)。新浪微博為開(kāi)發(fā)者提供了一個(gè)平臺,網(wǎng)站是: 收錄新浪微博開(kāi)發(fā)的綜合信息,包括開(kāi)發(fā)者的使用和介紹、各種語(yǔ)言的API功能介紹文檔、SDK等資料。
在開(kāi)發(fā)和學(xué)習的過(guò)程中,我覺(jué)得雖然不是太難,但是還是有一些問(wèn)題需要我們注意。今天在開(kāi)發(fā)學(xué)習的過(guò)程中,簡(jiǎn)單的使用PHP開(kāi)發(fā)新浪微博API。內容組織和解釋?zhuān)?br /> 新浪微博API開(kāi)發(fā)準備
首先,去新浪微博開(kāi)放平臺下載基于PHP的SDK開(kāi)發(fā)包。下載地址為:
下載完成后,放到自己的開(kāi)發(fā)環(huán)境中,解壓。演示程序也收錄在其中。我們可以參考它的示例程序來(lái)編寫(xiě)。
新浪微博API開(kāi)發(fā)最重要的用戶(hù)授權流程
事實(shí)上,開(kāi)發(fā)過(guò)程中的很多問(wèn)題都集中在用戶(hù)授權階段。我開(kāi)發(fā)的第三方應用程序使用 OAuth 授權。新浪微博開(kāi)放平臺對OAuth授權流程有清晰完整的介紹。大家可以去查一下,我會(huì )從例子開(kāi)發(fā)的角度來(lái)介紹和講解。
1.先獲取一個(gè)未授權的Request Token
$o = new WeiboOAuth( WB_AKEY , WB_SKEY );
$keys = $o->getRequestToken();
//echo($keys['oauth_token'].' : '.$keys['oauth_token_secret']);
我們需要在新浪微博開(kāi)放平臺注冊一個(gè)賬號,或者直接用我們的新浪微博賬號登錄,進(jìn)入我的應用,然后按照提示創(chuàng )建我們自己的第三方應用。創(chuàng )建完成后,我們可以得到兩個(gè)授權App Key和App Secret值,這兩個(gè)值是我們應用開(kāi)發(fā)的關(guān)鍵。
獲取到授權值后,我們就可以使用上面的代碼來(lái)獲取未授權的Request Token值,該值會(huì )存儲在$key數組變量中。
2.然后請求用戶(hù)授權Token
$_SESSION['keys'] = $keys;
aurl = $o->getAuthorizeURL( $keys['oauth_token'] ,false , '#39;);
拿到未授權的Request Token值后,我們就可以使用上面的代碼開(kāi)始準備去新浪微博授權頁(yè)面進(jìn)行授權了。$aurl 是授權鏈接頁(yè)面。拿到$aurl后,我們可以使用header()直接跳轉到頁(yè)面。授權頁(yè)面,然后用戶(hù)輸入新浪微博賬號和密碼進(jìn)行授權。授權完成后,會(huì )自動(dòng)跳轉回你在最后一個(gè)參數中設置的回調頁(yè)面:你可以將此鏈接設置為上一頁(yè),這樣授權完成后,會(huì )再次自動(dòng)跳轉回來(lái)。
需要注意的是,需要設置會(huì )話(huà)密鑰的值,這是獲取下面授權的Access Token所必需的。很多朋友可能會(huì )參考開(kāi)放平臺上的說(shuō)明進(jìn)行授權,但是發(fā)現總是報錯,一般是這個(gè)問(wèn)題。你沒(méi)有設置 session keys 的值,當然下面無(wú)法獲取 Access Token 的值。必須記住這一點(diǎn)。
3.用戶(hù)最后授權的Access Token
$o = new WeiboOAuth( WB_AKEY ,
WB_SKEY ,
$_SESSION['keys']['oauth_token'] ,
$_SESSION['keys']['oauth_token_secret'] );
$last_key = $o->getAccessToken( $_REQUEST['oauth_verifier'] ) ;
回聲($last_key['oauth_token']);
上述代碼最終得到用戶(hù)授權的Access Token,一共有兩個(gè)值,存放在$last_key數組變量中。我們還可以看到,最后兩個(gè)參數是我們之前設置的會(huì )話(huà)值。至此基本完成,這就是一個(gè)完整的新浪微博用戶(hù)授權流程。
授權完成后工作
授權完成后,我們就可以開(kāi)始調用新浪微博提供的各種API函數接口進(jìn)行實(shí)際應用開(kāi)發(fā)了。這里簡(jiǎn)單介紹一下獲取最新微博記錄的接口,其他類(lèi)似。
獲取新浪微博最新信息的API接口函數為:public_timeline()。示例代碼如下:
//獲取前20條最新更新的公眾微博消息
$c = new WeiboClient( WB_AKEY ,
WB_SKEY ,
$oauth_token ,
$oauth_token_secret );
$msg = $c->public_timeline();
if ($msg === false || $msg === null){
echo "發(fā)生錯誤";
返回假;
}
if (isset($msg['error_code']) && isset($msg['error'])){
echo ('Error_code: '.$msg['error_code'].'; 錯誤: '.$msg['error'] );
返回假;
}
print_r($msg);
通常我們拿到用戶(hù)授權的Access Token值后,保存在我們的用戶(hù)表中,對應我們應用中的賬號。之后,我們就不需要每次都去新浪微博的各個(gè)api接口了。認證。
上面的代碼很簡(jiǎn)單,實(shí)例化WeiboClient對象,然后直接調用接口函數public_timeline獲取返回信息,如果沒(méi)有錯誤。通常新浪微博api接口返回的數據格式一般是Json格式或者xml格式,而我們這里使用php進(jìn)行開(kāi)發(fā),所以使用Json格式數據有先天優(yōu)勢。如果返回Json格式數據,直接使用php函數json_decode()可以轉換成php常用的數組格式。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站( 使用GAE的程序同步程序有一些優(yōu)勢(1)_光明網(wǎng)(組圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 57 次瀏覽 ? 2022-01-29 21:05
使用GAE的程序同步程序有一些優(yōu)勢(1)_光明網(wǎng)(組圖))
從去年開(kāi)始,微博逐漸取代博客和SNS,成為最流行的互聯(lián)網(wǎng)應用之一。Twitter、新浪微博、地谷、9911等都非常受歡迎。許多人在各種微博平臺上注冊了賬號。但是這里又出現了一個(gè)新的問(wèn)題,那就是信息同步。
每個(gè)人的使用習慣不同,每個(gè)微博圈的用戶(hù)也不同。許多微博用戶(hù)都有一些人在每個(gè)平臺上關(guān)注和關(guān)注。因此,需要使用同步程序來(lái)統一各個(gè)平臺的信息。處理,還有這個(gè)處理中心,我覺(jué)得應該是推特。
推特的優(yōu)勢
使用 Twitter 作為微博中心的原因是有很多方法和工具可以更新 Twitter,您也可以使用 TwitterFeed 或 FeedBurner 從 RSS 提要直接更新 Twitter。Twitter本身也是全球最大的微博平臺。在可預見(jiàn)的未來(lái)不會(huì )消失,用戶(hù)發(fā)布的信息通常不會(huì )丟失或刪除。Twitter信息的備份和導出方法有很多種,所以把信息放到Twitter上吧。相對安全、穩妥、穩定。
將 Twitter 同步到其他微博的方法是使用 GAE。GAE 是谷歌提供的一個(gè)非常好的免費托管平臺。它具有很好的穩定性和強大的功能。它支持 Cron Job 調度任務(wù)。因此,我們只需要部署在 GAE 上。定時(shí)任務(wù),設置每分鐘抓取一次用戶(hù)推特信息,抓取成功后將最新消息直接發(fā)布到新浪微博等平臺,實(shí)現推特信息實(shí)時(shí)同步到各微博網(wǎng)站功能。
同步器的優(yōu)點(diǎn)
這個(gè)同步程序有一些優(yōu)點(diǎn)。與我之前介紹的微博同步相比,該程序在安全性、穩定性、速度和靈活性方面具有巨大的優(yōu)勢。
在安全方面,那些第三方網(wǎng)站會(huì )保存你的微博密碼進(jìn)行同步,這會(huì )給你的微博賬號帶來(lái)潛在的安全問(wèn)題。此外,保存你擁有的數千個(gè)粉絲的賬號密碼在那些同步網(wǎng)站中,你放心嗎?使用GAE的程序同步,只有你知道密碼。我們不應該擔心 GAE 被黑客入侵。
穩定性方面,我用了這個(gè)同步程序好幾個(gè)月了,幾乎沒(méi)有信息丟失。GAE服務(wù)本身的性能也很穩定,停機時(shí)間很少。
在速度方面,這個(gè)同步程序最快可以在1分鐘內同步所有信息,很少有網(wǎng)站能提供這樣的同步速度。
在靈活性方面,我們可以自己修改代碼來(lái)實(shí)現一些自定義的特殊功能。比如在這個(gè)程序中,我已經(jīng)定義了收錄@的信息是不同步的。我們也可以自己修改程序來(lái)實(shí)現很多其他的功能。
目前該同步程序支持推特同步新浪微博、地谷、9911、Dosha、人見(jiàn)網(wǎng)、follow5、6條微博,以及Ping.fm和Hellotxt兩個(gè)同步服務(wù)。同步流程圖如下所示。
主要在其他微博
如果用戶(hù)不打算使用Twitter作為主源,也可以使用這個(gè)程序進(jìn)行同步,先注冊一個(gè)Twitter賬號,然后找到用戶(hù)主微博的RSS Feed地址,使用TwitterFeed或者FeedBurner同步這個(gè)feed到Twitter,然后用這個(gè)程序來(lái)以后同步。如果新浪微博以后支持RSS Feed,可以通過(guò)這種方式將新浪微博的信息同步到其他微博。
應用安裝部署方法
下載方法,使用TortoiseSVN查看SVN地址,然后編輯app.yaml,修改為自己的appspot應用名稱(chēng),然后修改Twitter.py文件最后一行,填寫(xiě)你的Twitter用戶(hù)名,修改from ret = For send_sina_msgs("username","password",text)語(yǔ)句開(kāi)頭的用戶(hù)名和密碼,分別填寫(xiě)對應微博的用戶(hù)名和密碼。請使用# 注釋掉不需要同步的服務(wù)。cron.yaml文件是計劃任務(wù)設置,然后就可以按照本文的方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼,就可以發(fā)布了。
發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于可以設置定時(shí)執行最少1分鐘,同步速度非???,基本可以達到即時(shí)自動(dòng)同步的效果。
其他注意事項
Follow5 需要 api_key 來(lái)同步。目前,我的 api_key 放在程序中。建議使用follow5的用戶(hù)單獨申請一個(gè)api_key,防止我的api_key被使用。人建網(wǎng)需要邀請碼才能注冊使用。點(diǎn)擊此處獲取邀請鏈接。Ping.fm 和 Hellotxt 使用密鑰進(jìn)行身份驗證。有關(guān)詳細信息,請參閱此處。
() () 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(
使用GAE的程序同步程序有一些優(yōu)勢(1)_光明網(wǎng)(組圖))

從去年開(kāi)始,微博逐漸取代博客和SNS,成為最流行的互聯(lián)網(wǎng)應用之一。Twitter、新浪微博、地谷、9911等都非常受歡迎。許多人在各種微博平臺上注冊了賬號。但是這里又出現了一個(gè)新的問(wèn)題,那就是信息同步。
每個(gè)人的使用習慣不同,每個(gè)微博圈的用戶(hù)也不同。許多微博用戶(hù)都有一些人在每個(gè)平臺上關(guān)注和關(guān)注。因此,需要使用同步程序來(lái)統一各個(gè)平臺的信息。處理,還有這個(gè)處理中心,我覺(jué)得應該是推特。
推特的優(yōu)勢
使用 Twitter 作為微博中心的原因是有很多方法和工具可以更新 Twitter,您也可以使用 TwitterFeed 或 FeedBurner 從 RSS 提要直接更新 Twitter。Twitter本身也是全球最大的微博平臺。在可預見(jiàn)的未來(lái)不會(huì )消失,用戶(hù)發(fā)布的信息通常不會(huì )丟失或刪除。Twitter信息的備份和導出方法有很多種,所以把信息放到Twitter上吧。相對安全、穩妥、穩定。
將 Twitter 同步到其他微博的方法是使用 GAE。GAE 是谷歌提供的一個(gè)非常好的免費托管平臺。它具有很好的穩定性和強大的功能。它支持 Cron Job 調度任務(wù)。因此,我們只需要部署在 GAE 上。定時(shí)任務(wù),設置每分鐘抓取一次用戶(hù)推特信息,抓取成功后將最新消息直接發(fā)布到新浪微博等平臺,實(shí)現推特信息實(shí)時(shí)同步到各微博網(wǎng)站功能。
同步器的優(yōu)點(diǎn)
這個(gè)同步程序有一些優(yōu)點(diǎn)。與我之前介紹的微博同步相比,該程序在安全性、穩定性、速度和靈活性方面具有巨大的優(yōu)勢。
在安全方面,那些第三方網(wǎng)站會(huì )保存你的微博密碼進(jìn)行同步,這會(huì )給你的微博賬號帶來(lái)潛在的安全問(wèn)題。此外,保存你擁有的數千個(gè)粉絲的賬號密碼在那些同步網(wǎng)站中,你放心嗎?使用GAE的程序同步,只有你知道密碼。我們不應該擔心 GAE 被黑客入侵。
穩定性方面,我用了這個(gè)同步程序好幾個(gè)月了,幾乎沒(méi)有信息丟失。GAE服務(wù)本身的性能也很穩定,停機時(shí)間很少。
在速度方面,這個(gè)同步程序最快可以在1分鐘內同步所有信息,很少有網(wǎng)站能提供這樣的同步速度。
在靈活性方面,我們可以自己修改代碼來(lái)實(shí)現一些自定義的特殊功能。比如在這個(gè)程序中,我已經(jīng)定義了收錄@的信息是不同步的。我們也可以自己修改程序來(lái)實(shí)現很多其他的功能。
目前該同步程序支持推特同步新浪微博、地谷、9911、Dosha、人見(jiàn)網(wǎng)、follow5、6條微博,以及Ping.fm和Hellotxt兩個(gè)同步服務(wù)。同步流程圖如下所示。

主要在其他微博
如果用戶(hù)不打算使用Twitter作為主源,也可以使用這個(gè)程序進(jìn)行同步,先注冊一個(gè)Twitter賬號,然后找到用戶(hù)主微博的RSS Feed地址,使用TwitterFeed或者FeedBurner同步這個(gè)feed到Twitter,然后用這個(gè)程序來(lái)以后同步。如果新浪微博以后支持RSS Feed,可以通過(guò)這種方式將新浪微博的信息同步到其他微博。
應用安裝部署方法
下載方法,使用TortoiseSVN查看SVN地址,然后編輯app.yaml,修改為自己的appspot應用名稱(chēng),然后修改Twitter.py文件最后一行,填寫(xiě)你的Twitter用戶(hù)名,修改from ret = For send_sina_msgs("username","password",text)語(yǔ)句開(kāi)頭的用戶(hù)名和密碼,分別填寫(xiě)對應微博的用戶(hù)名和密碼。請使用# 注釋掉不需要同步的服務(wù)。cron.yaml文件是計劃任務(wù)設置,然后就可以按照本文的方法發(fā)布,執行appcfg.py更新目錄名,使用Gmail賬號和密碼,就可以發(fā)布了。
發(fā)布后,GAE 可以定期執行 twitter.py 程序。由于可以設置定時(shí)執行最少1分鐘,同步速度非???,基本可以達到即時(shí)自動(dòng)同步的效果。
其他注意事項
Follow5 需要 api_key 來(lái)同步。目前,我的 api_key 放在程序中。建議使用follow5的用戶(hù)單獨申請一個(gè)api_key,防止我的api_key被使用。人建網(wǎng)需要邀請碼才能注冊使用。點(diǎn)擊此處獲取邀請鏈接。Ping.fm 和 Hellotxt 使用密鑰進(jìn)行身份驗證。有關(guān)詳細信息,請參閱此處。

() ()
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何調用微博API爬單條微博的評論呢?(組圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 63 次瀏覽 ? 2022-01-29 17:24
當我沉浸在學(xué)習mysql、scrapy、django準備下一波吹水的時(shí)候,有人說(shuō),你可以爬下老薛的微博,蹭個(gè)熱點(diǎn),這讓勤奮(mo)很難( mo) learning (kou) xi (jia) 我停止發(fā)幾個(gè)代碼了。
然后趕緊關(guān)注了最近關(guān)于老薛的新聞……感受了劇情的復雜和案件的撲朔迷離……我默默的學(xué)會(huì )了看合同……怎么用ELA分析圖片……論文怎么寫(xiě)……怎么查別人的銀行對賬單……一點(diǎn)小知識……讓我慢一點(diǎn)……
所以,這次的主題是分析老薛最新的微博評論,分析評論粉絲的心情,聽(tīng)我說(shuō)。
1.新浪微博API
在經(jīng)歷了幾次(非常痛苦的)爬蟲(chóng)禁令后,我學(xué)會(huì )了在爬 網(wǎng)站 之前檢查 API 的“好”習慣。新浪作為大公司,怎么可能不推出新浪微博API?新浪有自己的開(kāi)發(fā)者開(kāi)放平臺。我們就不講python調用微博API的方法了。以下是登錄App_key和App_secret訪(fǎng)問(wèn)微博。API的代碼,代碼基于Python2。Python3 使用 weibo 模塊存在一定的問(wèn)題。
既然知道了如何登錄API,那么如何調用API爬取一條微博評論呢?一行代碼就可以做到。
r = ments.show.get(id = 41509,count = 200,page = 1)
一條微博的所有評論信息都在ments中。這里我們需要對比一下微博API文檔。微博API中說(shuō)調用微博評論API需要用戶(hù)授權,但是捏~只要知道單條微博的id,就可以調用這個(gè)API后,再講如何獲取單條微博的id(小聲點(diǎn),別讓微博知道,萬(wàn)一發(fā)了)。
以client.interface name.get(request parameter)的方式獲取API。獲取API后,您可以在接口詳情中查看規格。文檔中有返回結果的示例。
關(guān)鍵數據的json接口名稱(chēng)也在文檔中給出。
如果我們想獲取微博評論的內容,只需要調用文本接口即可
對于 st inments:
文本 = st.text
2.微博爬蟲(chóng)
通過(guò)調用新浪微博API,我們可以簡(jiǎn)單的獲取單條微博的評論信息。為什么簡(jiǎn)單,因為流行的信息很昂貴!你以為大V的微博只是免費給你API調用嗎?未經(jīng)認證的應用程序開(kāi)發(fā)人員每天只能請求數千次 API。這對于老薛這種單條微博評論幾十萬(wàn)的大V來(lái)說(shuō),是個(gè)大問(wèn)題。說(shuō)...太少(TT)
所以捏,還是要寫(xiě)微博爬蟲(chóng)。
俗話(huà)說(shuō),知己知彼,百戰不殆。作為一家大公司,新浪一定經(jīng)歷了數百場(chǎng)戰斗。它一定經(jīng)歷過(guò)無(wú)數次爬蟲(chóng)與反爬蟲(chóng)的戰爭,一定有完善的反爬蟲(chóng)策略。俗話(huà)說(shuō),面對強敵,繞道而行。一個(gè)老板說(shuō)的好,爬網(wǎng)站,先爬移動(dòng)端
登錄微博后,去老薛的微博回應P圖事件,_(:зゝ∠)_老薛,怪我,怪我來(lái)不及,點(diǎn)進(jìn)去的時(shí)候已經(jīng)有70w+評論了(截至發(fā)文當天已有100w+評論),靜謐的微博下,可見(jiàn)粉絲的不安之心……
移動(dòng)端微博的URL簡(jiǎn)潔明了,不像PC端的邏輯那么復雜不清楚:
從xhr文件我們可以知道,熱門(mén)評論的變化規律是:
';id=' + 單條微博id + '&type=comment&hot=1&page=' + 頁(yè)碼
最新評論的變化規律是:
'' + 單個(gè)微博id + '&page=' + 頁(yè)碼
打開(kāi)可以看到熱門(mén)評論的json文件。
接下來(lái)就是套路,偽裝瀏覽器頭,讀取json文件,遍歷每一頁(yè)……這不是重點(diǎn)!而這些我之前都講過(guò)~直接上代碼~這里是Python3的代碼~
這里有幾點(diǎn)注意事項:
設置爬取間隔后,微博爬蟲(chóng)被封禁的概率大大降低(尤其是晚上)
新浪每次返回的json數據個(gè)數是隨機的,所以翻頁(yè)后會(huì )有數據重復,所以使用了重復數據刪除,后面會(huì )講到。
添加刪除文本和源碼中的emoji表情的代碼(寫(xiě)入數據庫花了很長(cháng)時(shí)間,幾乎從刪除庫到逃跑/(ㄒoㄒ)/),還刪除了對別人的回復與它混合。html代碼。
我只寫(xiě)了讀取的數據,沒(méi)有寫(xiě)怎么保存,因為我們需要統計!根據!圖書(shū)館!熱的?。ㄟ@才是重點(diǎn)!敲黑板)
在python中讀取和寫(xiě)入數據庫
微博爬蟲(chóng)雖然大大增加了數據獲取量,但也因為是爬蟲(chóng)而輕易被新浪封殺。這里結束循環(huán)的判斷是網(wǎng)絡(luò )狀態(tài)不是200,但是當微博發(fā)現是爬蟲(chóng)時(shí),微博會(huì )返回一個(gè)網(wǎng)頁(yè),網(wǎng)頁(yè)中并沒(méi)有真實(shí)的內容。這時(shí)候程序會(huì )報錯,而之前爬取的數據,什么都沒(méi)有了。
但是如果你爬一會(huì )兒,保存一次數據,數據量會(huì )增加……冷文件隨機射在猿臉上……我的心就像是……這時(shí)候,我們需要使用數據庫。
數據庫,顧名思義,就是存儲數據的倉庫。數據庫作為一個(gè)發(fā)展了60多年的管理系統,應用領(lǐng)域巨大,功能復雜……好吧,我不能再編輯了。
在本文中,數據庫的主要作用是一個(gè)AI風(fēng)格的excel表格(●—●)。在爬取的過(guò)程中,爬取的數據會(huì )存儲在里面,爬取的數字也會(huì )存儲在里面。即使爬蟲(chóng)程序中斷,中斷前爬取的數據也會(huì )存入數據庫。
大多數數據庫都可以用python,我知道mysql、sqlite、mongodb、redis。這里是mysql,mac上mysql的安裝,Navicat的使用,管理數據庫的軟件,其他系統大家可以自己找,如果安裝使用過(guò)程中出現問(wèn)題,請不要找我(溜走)根據上面的代碼,在navicat中創(chuàng )建數據庫、表和字段,以及字段的格式。將代碼添加到 Python 程序。
運行python程序,我大概爬了2w實(shí)時(shí)評論。不得不說(shuō),新浪微博的反爬還是很厲害的。解決方案有兩種:更改IP和切換帳戶(hù)。我之前寫(xiě)過(guò)關(guān)于IP代理的使用??梢栽趯毑厣腺徺I(mǎi),但是!_(:зゝ∠)_因為這篇文章的作者是個(gè)很窮也經(jīng)常小氣的人,而且身患重?。☉邪?w條數據也有研究?jì)r(jià)值,對吧(((;??? ; ))),讓我們繼續我們的研究 (((;???;)))...
在進(jìn)行下一步之前,我們還需要讀取數據庫的內容,python中讀取數據庫的代碼也很簡(jiǎn)單。
這樣就讀出了之前爬取的信息,但是前面已經(jīng)提到,微博爬蟲(chóng)在翻頁(yè)的時(shí)候返回的數據個(gè)數是隨機的,所以會(huì )出現重復的情況,所以讀完之后需要使用使數據變得繁重的 if 語(yǔ)句。
4.自然語(yǔ)言處理
自然語(yǔ)言處理是人工智能的一個(gè)領(lǐng)域。機器可以通過(guò)算法設計來(lái)理解人類(lèi)語(yǔ)言。自然語(yǔ)言也是人工智能的難點(diǎn)。漢語(yǔ)等語(yǔ)言是深奧難測的。最大的困難是python中有很多與NLP相關(guān)的模塊。感興趣的朋友可以通過(guò)在python中實(shí)現簡(jiǎn)單的文本情感分析來(lái)探索NLP。
我拿了(ban)test(yun)一些現成的情感分析算法,對爬取的評論進(jìn)行分析。錯誤率很高_(:зゝ∠)_,怎么辦?算法應該重新設計嗎?好像遇到了人生第一個(gè)大問(wèn)題,就是沒(méi)學(xué)好語(yǔ)言……
當然,像我這樣聰明(lan)和生活(duo)的女孩子,自然很快就發(fā)現了python中的一個(gè)中文著(zhù)名的NLP庫:snowNLP。snowNLP調用的方法比較簡(jiǎn)單。調用方法和生成結果在源碼中有詳細說(shuō)明。
這段代碼讀取數據庫后獲取評論正文生成的列表文件,依次對每條評論進(jìn)行情感值分析。snowNLP 可以根據給定的句子生成一個(gè)介于 0 和 1 之間的值。當值大于0.5時(shí),表示句子的情感極性更積極。當分數小于 0.5 時(shí),情緒的極性偏向于負面。當然,越是朝著(zhù)兩個(gè)腦袋,情緒越明顯。我們來(lái)看看測試評論的結果。
第一項:惡心給了0.01分,最后一項:支持薛之謙給了0.99分??雌渌痉仙舷挛牡木渥拥膽B(tài)度,當需要對單個(gè)產(chǎn)品的評價(jià)態(tài)度進(jìn)行評價(jià)時(shí),可以使用snowNLP。但由于老雪的評論涉及到他本人、李雨桐、高磊鑫三個(gè)人,算法無(wú)法判斷評論的情感價(jià)值是誰(shuí)的,而且微博評論可以由粉絲互相回復,這使得確定評論的主題是誰(shuí)。這更令人困惑(機器說(shuō)我無(wú)法學(xué)習......)。
這似乎意味著(zhù)這個(gè)分析的結果將是……沒(méi)有用處。我不希望這種事情發(fā)生……我是人……最重要的是要開(kāi)心……我不會(huì )寫(xiě)算法,我的語(yǔ)言也不好,我真的做不到(?°?°?)@ >…
5.分析結果
這次分析的目的愉快地從分析粉絲對薛之謙事件的情緒轉變?yōu)閱渭兎治龇劢z的情緒(●—●)。
plt.hist(sentimentslist,bins=np.arange(0,1,0.02))
plt.show()
統計上一節處理的情感值列表,生成分布圖。以下數據采集時(shí)間為9月27日19:00,采集2w條評論。
對了(真的對了,一臉正經(jīng))我還爬了2w條李雨桐轉發(fā)網(wǎng)友捐款的微博評論。
對了(真的對了,看我真誠的眼神)我爬了微博評論說(shuō)陳赫作弊時(shí)發(fā)錯博了。
從這三張圖可以看出,在0、1的末端和0.5附近的情緒值更頻繁,說(shuō)明粉絲對此類(lèi)事件的情緒是正面的還是負面的。比較明顯。但是您也可以從圖片中看到一些細微的差異。老薛微博中接近1的情感值數量高于接近0的數量,但沒(méi)有超過(guò)700個(gè)。李雨桐微博中接近1的情感值數量要低得多。 0,甚至接近0的數字也達到了1000多,但都超過(guò)了700,而陳赫的微博分析結果顯示,兩者都接近800。由于算法存在一定誤差,不代表真實(shí)審查結果,所以我不再分析它(你知道的)。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(如何調用微博API爬單條微博的評論呢?(組圖))
當我沉浸在學(xué)習mysql、scrapy、django準備下一波吹水的時(shí)候,有人說(shuō),你可以爬下老薛的微博,蹭個(gè)熱點(diǎn),這讓勤奮(mo)很難( mo) learning (kou) xi (jia) 我停止發(fā)幾個(gè)代碼了。
然后趕緊關(guān)注了最近關(guān)于老薛的新聞……感受了劇情的復雜和案件的撲朔迷離……我默默的學(xué)會(huì )了看合同……怎么用ELA分析圖片……論文怎么寫(xiě)……怎么查別人的銀行對賬單……一點(diǎn)小知識……讓我慢一點(diǎn)……
所以,這次的主題是分析老薛最新的微博評論,分析評論粉絲的心情,聽(tīng)我說(shuō)。
1.新浪微博API
在經(jīng)歷了幾次(非常痛苦的)爬蟲(chóng)禁令后,我學(xué)會(huì )了在爬 網(wǎng)站 之前檢查 API 的“好”習慣。新浪作為大公司,怎么可能不推出新浪微博API?新浪有自己的開(kāi)發(fā)者開(kāi)放平臺。我們就不講python調用微博API的方法了。以下是登錄App_key和App_secret訪(fǎng)問(wèn)微博。API的代碼,代碼基于Python2。Python3 使用 weibo 模塊存在一定的問(wèn)題。
既然知道了如何登錄API,那么如何調用API爬取一條微博評論呢?一行代碼就可以做到。
r = ments.show.get(id = 41509,count = 200,page = 1)
一條微博的所有評論信息都在ments中。這里我們需要對比一下微博API文檔。微博API中說(shuō)調用微博評論API需要用戶(hù)授權,但是捏~只要知道單條微博的id,就可以調用這個(gè)API后,再講如何獲取單條微博的id(小聲點(diǎn),別讓微博知道,萬(wàn)一發(fā)了)。
以client.interface name.get(request parameter)的方式獲取API。獲取API后,您可以在接口詳情中查看規格。文檔中有返回結果的示例。
關(guān)鍵數據的json接口名稱(chēng)也在文檔中給出。
如果我們想獲取微博評論的內容,只需要調用文本接口即可
對于 st inments:
文本 = st.text
2.微博爬蟲(chóng)
通過(guò)調用新浪微博API,我們可以簡(jiǎn)單的獲取單條微博的評論信息。為什么簡(jiǎn)單,因為流行的信息很昂貴!你以為大V的微博只是免費給你API調用嗎?未經(jīng)認證的應用程序開(kāi)發(fā)人員每天只能請求數千次 API。這對于老薛這種單條微博評論幾十萬(wàn)的大V來(lái)說(shuō),是個(gè)大問(wèn)題。說(shuō)...太少(TT)
所以捏,還是要寫(xiě)微博爬蟲(chóng)。
俗話(huà)說(shuō),知己知彼,百戰不殆。作為一家大公司,新浪一定經(jīng)歷了數百場(chǎng)戰斗。它一定經(jīng)歷過(guò)無(wú)數次爬蟲(chóng)與反爬蟲(chóng)的戰爭,一定有完善的反爬蟲(chóng)策略。俗話(huà)說(shuō),面對強敵,繞道而行。一個(gè)老板說(shuō)的好,爬網(wǎng)站,先爬移動(dòng)端
登錄微博后,去老薛的微博回應P圖事件,_(:зゝ∠)_老薛,怪我,怪我來(lái)不及,點(diǎn)進(jìn)去的時(shí)候已經(jīng)有70w+評論了(截至發(fā)文當天已有100w+評論),靜謐的微博下,可見(jiàn)粉絲的不安之心……
移動(dòng)端微博的URL簡(jiǎn)潔明了,不像PC端的邏輯那么復雜不清楚:
從xhr文件我們可以知道,熱門(mén)評論的變化規律是:
';id=' + 單條微博id + '&type=comment&hot=1&page=' + 頁(yè)碼
最新評論的變化規律是:
'' + 單個(gè)微博id + '&page=' + 頁(yè)碼
打開(kāi)可以看到熱門(mén)評論的json文件。
接下來(lái)就是套路,偽裝瀏覽器頭,讀取json文件,遍歷每一頁(yè)……這不是重點(diǎn)!而這些我之前都講過(guò)~直接上代碼~這里是Python3的代碼~
這里有幾點(diǎn)注意事項:
設置爬取間隔后,微博爬蟲(chóng)被封禁的概率大大降低(尤其是晚上)
新浪每次返回的json數據個(gè)數是隨機的,所以翻頁(yè)后會(huì )有數據重復,所以使用了重復數據刪除,后面會(huì )講到。
添加刪除文本和源碼中的emoji表情的代碼(寫(xiě)入數據庫花了很長(cháng)時(shí)間,幾乎從刪除庫到逃跑/(ㄒoㄒ)/),還刪除了對別人的回復與它混合。html代碼。
我只寫(xiě)了讀取的數據,沒(méi)有寫(xiě)怎么保存,因為我們需要統計!根據!圖書(shū)館!熱的?。ㄟ@才是重點(diǎn)!敲黑板)
在python中讀取和寫(xiě)入數據庫
微博爬蟲(chóng)雖然大大增加了數據獲取量,但也因為是爬蟲(chóng)而輕易被新浪封殺。這里結束循環(huán)的判斷是網(wǎng)絡(luò )狀態(tài)不是200,但是當微博發(fā)現是爬蟲(chóng)時(shí),微博會(huì )返回一個(gè)網(wǎng)頁(yè),網(wǎng)頁(yè)中并沒(méi)有真實(shí)的內容。這時(shí)候程序會(huì )報錯,而之前爬取的數據,什么都沒(méi)有了。
但是如果你爬一會(huì )兒,保存一次數據,數據量會(huì )增加……冷文件隨機射在猿臉上……我的心就像是……這時(shí)候,我們需要使用數據庫。
數據庫,顧名思義,就是存儲數據的倉庫。數據庫作為一個(gè)發(fā)展了60多年的管理系統,應用領(lǐng)域巨大,功能復雜……好吧,我不能再編輯了。
在本文中,數據庫的主要作用是一個(gè)AI風(fēng)格的excel表格(●—●)。在爬取的過(guò)程中,爬取的數據會(huì )存儲在里面,爬取的數字也會(huì )存儲在里面。即使爬蟲(chóng)程序中斷,中斷前爬取的數據也會(huì )存入數據庫。
大多數數據庫都可以用python,我知道mysql、sqlite、mongodb、redis。這里是mysql,mac上mysql的安裝,Navicat的使用,管理數據庫的軟件,其他系統大家可以自己找,如果安裝使用過(guò)程中出現問(wèn)題,請不要找我(溜走)根據上面的代碼,在navicat中創(chuàng )建數據庫、表和字段,以及字段的格式。將代碼添加到 Python 程序。
運行python程序,我大概爬了2w實(shí)時(shí)評論。不得不說(shuō),新浪微博的反爬還是很厲害的。解決方案有兩種:更改IP和切換帳戶(hù)。我之前寫(xiě)過(guò)關(guān)于IP代理的使用??梢栽趯毑厣腺徺I(mǎi),但是!_(:зゝ∠)_因為這篇文章的作者是個(gè)很窮也經(jīng)常小氣的人,而且身患重?。☉邪?w條數據也有研究?jì)r(jià)值,對吧(((;??? ; ))),讓我們繼續我們的研究 (((;???;)))...
在進(jìn)行下一步之前,我們還需要讀取數據庫的內容,python中讀取數據庫的代碼也很簡(jiǎn)單。
這樣就讀出了之前爬取的信息,但是前面已經(jīng)提到,微博爬蟲(chóng)在翻頁(yè)的時(shí)候返回的數據個(gè)數是隨機的,所以會(huì )出現重復的情況,所以讀完之后需要使用使數據變得繁重的 if 語(yǔ)句。
4.自然語(yǔ)言處理
自然語(yǔ)言處理是人工智能的一個(gè)領(lǐng)域。機器可以通過(guò)算法設計來(lái)理解人類(lèi)語(yǔ)言。自然語(yǔ)言也是人工智能的難點(diǎn)。漢語(yǔ)等語(yǔ)言是深奧難測的。最大的困難是python中有很多與NLP相關(guān)的模塊。感興趣的朋友可以通過(guò)在python中實(shí)現簡(jiǎn)單的文本情感分析來(lái)探索NLP。
我拿了(ban)test(yun)一些現成的情感分析算法,對爬取的評論進(jìn)行分析。錯誤率很高_(:зゝ∠)_,怎么辦?算法應該重新設計嗎?好像遇到了人生第一個(gè)大問(wèn)題,就是沒(méi)學(xué)好語(yǔ)言……
當然,像我這樣聰明(lan)和生活(duo)的女孩子,自然很快就發(fā)現了python中的一個(gè)中文著(zhù)名的NLP庫:snowNLP。snowNLP調用的方法比較簡(jiǎn)單。調用方法和生成結果在源碼中有詳細說(shuō)明。
這段代碼讀取數據庫后獲取評論正文生成的列表文件,依次對每條評論進(jìn)行情感值分析。snowNLP 可以根據給定的句子生成一個(gè)介于 0 和 1 之間的值。當值大于0.5時(shí),表示句子的情感極性更積極。當分數小于 0.5 時(shí),情緒的極性偏向于負面。當然,越是朝著(zhù)兩個(gè)腦袋,情緒越明顯。我們來(lái)看看測試評論的結果。
第一項:惡心給了0.01分,最后一項:支持薛之謙給了0.99分??雌渌痉仙舷挛牡木渥拥膽B(tài)度,當需要對單個(gè)產(chǎn)品的評價(jià)態(tài)度進(jìn)行評價(jià)時(shí),可以使用snowNLP。但由于老雪的評論涉及到他本人、李雨桐、高磊鑫三個(gè)人,算法無(wú)法判斷評論的情感價(jià)值是誰(shuí)的,而且微博評論可以由粉絲互相回復,這使得確定評論的主題是誰(shuí)。這更令人困惑(機器說(shuō)我無(wú)法學(xué)習......)。
這似乎意味著(zhù)這個(gè)分析的結果將是……沒(méi)有用處。我不希望這種事情發(fā)生……我是人……最重要的是要開(kāi)心……我不會(huì )寫(xiě)算法,我的語(yǔ)言也不好,我真的做不到(?°?°?)@ >…
5.分析結果
這次分析的目的愉快地從分析粉絲對薛之謙事件的情緒轉變?yōu)閱渭兎治龇劢z的情緒(●—●)。
plt.hist(sentimentslist,bins=np.arange(0,1,0.02))
plt.show()
統計上一節處理的情感值列表,生成分布圖。以下數據采集時(shí)間為9月27日19:00,采集2w條評論。
對了(真的對了,一臉正經(jīng))我還爬了2w條李雨桐轉發(fā)網(wǎng)友捐款的微博評論。
對了(真的對了,看我真誠的眼神)我爬了微博評論說(shuō)陳赫作弊時(shí)發(fā)錯博了。
從這三張圖可以看出,在0、1的末端和0.5附近的情緒值更頻繁,說(shuō)明粉絲對此類(lèi)事件的情緒是正面的還是負面的。比較明顯。但是您也可以從圖片中看到一些細微的差異。老薛微博中接近1的情感值數量高于接近0的數量,但沒(méi)有超過(guò)700個(gè)。李雨桐微博中接近1的情感值數量要低得多。 0,甚至接近0的數字也達到了1000多,但都超過(guò)了700,而陳赫的微博分析結果顯示,兩者都接近800。由于算法存在一定誤差,不代表真實(shí)審查結果,所以我不再分析它(你知道的)。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(實(shí)現一個(gè)綁定新浪微博實(shí)現同步微博登錄效果的方便)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 55 次瀏覽 ? 2022-01-28 21:05
近日,公司要求實(shí)現綁定新浪微博,以達到同步微博登錄的效果。
我花了一段時(shí)間才充分利用它。下面說(shuō)說(shuō)我的實(shí)現過(guò)程,希望能給想做這個(gè)開(kāi)發(fā)的人一些幫助!
首先我們要到新浪微博開(kāi)放平臺創(chuàng )建我們的網(wǎng)站
在創(chuàng )建網(wǎng)站之前,如果沒(méi)有認證,需要先認證(幾小時(shí)內可以審核通過(guò))
根據條件創(chuàng )建網(wǎng)站。中途注意復制一段代碼到發(fā)布的項目中,然后等待審批(預計時(shí)間)
中間會(huì )返回一個(gè)AppKey和一個(gè)AppSecret;
批準后,我們??將正式開(kāi)始我們的開(kāi)發(fā)過(guò)程
我們先來(lái)看看整個(gè)過(guò)程
在管理中心 > 接口管理中有所有可以調用的授權接口
在授權機制里面。如果測試用戶(hù)可以填寫(xiě)/Weibo.aspx,請注意填寫(xiě)其回調地址(Weibo.aspx是我們的回調頁(yè)面)
public partial class wbAPI : System.Web.UI.Page
{
public const string AppKey = "207788581"; //請自行設置AppKey
public const string AppSecret = "cba11dad8522a7b1f32aefde396be"; //請自行設置AppSecret
public const string CallbackUrl = "http://www.miutrip.com/Weibo.aspx"; //請自行設置回調地址,一般這里不用填應用實(shí)際地址,填站內應用地址也是可以的
protected void Page_Load(object sender, EventArgs e)
{
#region 注意事項(綁定新浪微博)
/**
*這段代碼放入你的觸發(fā)時(shí)間處。綁定按鈕,一般是在別的頁(yè)面跳過(guò)
* 127.0.0.1本機IP 一般用于測試
* 8080 本機端口號
* Weibo.aspx為當前你的頁(yè)面
* 授權申請成功之后,配置的返回路徑應該為 http://www.miutrip.com/Weibo.aspx
* 調用微博信息 要添加NetDimension.Weibo.DLL文件
*/
// href="https://api.weibo.com/oauth2/a ... ot%3B
#endregion
if (!IsPostBack)
{
var sign = Request["code"];
//var sign = "b3eb3bccbf4cd9399236a02a81cde4bf";
var oauth = new NetDimension.Weibo.OAuth(AppKey, AppSecret, CallbackUrl);
/*
* 正常的流程或Web流程:
* 1. 獲取授權地址
* 2. 訪(fǎng)問(wèn)授權地址
* 3. 授權成功后自動(dòng)跳轉至callback指定的網(wǎng)站,并獲得code
* 4. 通過(guò)code換取access token
*/
if (!string.IsNullOrEmpty(sign))
{
var accessToken = oauth.GetAccessTokenByAuthorizationCode(sign).Token;//注意:callback指定的url必須一致
oauth = new OAuth(AppKey, AppSecret, accessToken, "");
var sina = new Client(oauth);
var userInfo = sina.API.Dynamic.Users.Show(uid: sina.API.Entity.Account.GetUID());
//userInfo就為我們得到的用戶(hù)信息
Response.Write(userInfo);
//Server.Transfer("CorpActivate.aspx", true);
}
}
}
要實(shí)現這個(gè)頁(yè)面,我們還需要添加一個(gè)DLL:NetDimension.Weibo.dll 可以在線(xiàn)下載
微博入口:
新浪微博登陸
function openwin() {
window.open("https://api.weibo.com/oauth2/a ... ot%3B, "newwindow", "height=100, width=400, toolbar =no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") //寫(xiě)成一行
}
client_id 是 appkey。如果有多個(gè)微博條目,不方便處理。
可以在回調地址中,即redirect_uri=
http://www.miutrip.com/Weibo.aspx?sinatype=Login
后跟一個(gè)參數,用于區分該條目傳遞的值。
您可以在 weibo.aspx 獲得它
string sinatype = Request.QueryString["Login"];
有什么不明白的可以加我@寫(xiě)下你的情況 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(實(shí)現一個(gè)綁定新浪微博實(shí)現同步微博登錄效果的方便)
近日,公司要求實(shí)現綁定新浪微博,以達到同步微博登錄的效果。
我花了一段時(shí)間才充分利用它。下面說(shuō)說(shuō)我的實(shí)現過(guò)程,希望能給想做這個(gè)開(kāi)發(fā)的人一些幫助!
首先我們要到新浪微博開(kāi)放平臺創(chuàng )建我們的網(wǎng)站
在創(chuàng )建網(wǎng)站之前,如果沒(méi)有認證,需要先認證(幾小時(shí)內可以審核通過(guò))
根據條件創(chuàng )建網(wǎng)站。中途注意復制一段代碼到發(fā)布的項目中,然后等待審批(預計時(shí)間)
中間會(huì )返回一個(gè)AppKey和一個(gè)AppSecret;
批準后,我們??將正式開(kāi)始我們的開(kāi)發(fā)過(guò)程
我們先來(lái)看看整個(gè)過(guò)程
在管理中心 > 接口管理中有所有可以調用的授權接口
在授權機制里面。如果測試用戶(hù)可以填寫(xiě)/Weibo.aspx,請注意填寫(xiě)其回調地址(Weibo.aspx是我們的回調頁(yè)面)
public partial class wbAPI : System.Web.UI.Page
{
public const string AppKey = "207788581"; //請自行設置AppKey
public const string AppSecret = "cba11dad8522a7b1f32aefde396be"; //請自行設置AppSecret
public const string CallbackUrl = "http://www.miutrip.com/Weibo.aspx"; //請自行設置回調地址,一般這里不用填應用實(shí)際地址,填站內應用地址也是可以的
protected void Page_Load(object sender, EventArgs e)
{
#region 注意事項(綁定新浪微博)
/**
*這段代碼放入你的觸發(fā)時(shí)間處。綁定按鈕,一般是在別的頁(yè)面跳過(guò)
* 127.0.0.1本機IP 一般用于測試
* 8080 本機端口號
* Weibo.aspx為當前你的頁(yè)面
* 授權申請成功之后,配置的返回路徑應該為 http://www.miutrip.com/Weibo.aspx
* 調用微博信息 要添加NetDimension.Weibo.DLL文件
*/
// href="https://api.weibo.com/oauth2/a ... ot%3B
#endregion
if (!IsPostBack)
{
var sign = Request["code"];
//var sign = "b3eb3bccbf4cd9399236a02a81cde4bf";
var oauth = new NetDimension.Weibo.OAuth(AppKey, AppSecret, CallbackUrl);
/*
* 正常的流程或Web流程:
* 1. 獲取授權地址
* 2. 訪(fǎng)問(wèn)授權地址
* 3. 授權成功后自動(dòng)跳轉至callback指定的網(wǎng)站,并獲得code
* 4. 通過(guò)code換取access token
*/
if (!string.IsNullOrEmpty(sign))
{
var accessToken = oauth.GetAccessTokenByAuthorizationCode(sign).Token;//注意:callback指定的url必須一致
oauth = new OAuth(AppKey, AppSecret, accessToken, "");
var sina = new Client(oauth);
var userInfo = sina.API.Dynamic.Users.Show(uid: sina.API.Entity.Account.GetUID());
//userInfo就為我們得到的用戶(hù)信息
Response.Write(userInfo);
//Server.Transfer("CorpActivate.aspx", true);
}
}
}
要實(shí)現這個(gè)頁(yè)面,我們還需要添加一個(gè)DLL:NetDimension.Weibo.dll 可以在線(xiàn)下載
微博入口:
新浪微博登陸
function openwin() {
window.open("https://api.weibo.com/oauth2/a ... ot%3B, "newwindow", "height=100, width=400, toolbar =no, menubar=no, scrollbars=no, resizable=no, location=no, status=no") //寫(xiě)成一行
}
client_id 是 appkey。如果有多個(gè)微博條目,不方便處理。
可以在回調地址中,即redirect_uri=
http://www.miutrip.com/Weibo.aspx?sinatype=Login
后跟一個(gè)參數,用于區分該條目傳遞的值。
您可以在 weibo.aspx 獲得它
string sinatype = Request.QueryString["Login"];
有什么不明白的可以加我@寫(xiě)下你的情況