使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(通過(guò)新浪微博API生成短鏈接,支持一次性轉多個(gè)長(cháng)鏈接)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 145 次瀏覽 ? 2021-10-19 11:05
通過(guò)新浪微博API,可以生成短鏈接,同時(shí)可以傳輸多個(gè)長(cháng)鏈接。什么是短鏈接 短鏈接,一般來(lái)說(shuō)就是通過(guò)程序計算的方式將一個(gè)長(cháng)的URL URL 轉換成一個(gè)短的URL 字符串。短鏈接服務(wù)
國內各大微博都推出了自己的短鏈接服務(wù)。比如新浪微博、騰訊微博等。
為什么選擇新浪微博API新浪微博短鏈接API是開(kāi)放的 新浪微博短鏈接API不需要用戶(hù)登錄文檔查詢(xún)鏈接使用方法
拿到自己的AppKey后,只需替換類(lèi)的成員屬性$appKey的值即可,如下圖,$shortUrl為API請求地址
// APPkey,我在網(wǎng)上找的(https://fengmk2.com/blog/appkey.html),可以自己申請
protected $appKey = '569452181';
// 轉短連接API地址
protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';
其他的,基本不需要配置,直接實(shí)例化類(lèi)ShortLink,然后調用getShortUrl方法,需要注意的是長(cháng)鏈接URL數組$longUrl中的值可以傳多個(gè)值
當然,為了方便,我把它寫(xiě)成一個(gè)類(lèi),可以根據自己的需要進(jìn)行調整,滿(mǎn)足自己的需求。
源代碼
<p> 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(通過(guò)新浪微博API生成短鏈接,支持一次性轉多個(gè)長(cháng)鏈接)
通過(guò)新浪微博API,可以生成短鏈接,同時(shí)可以傳輸多個(gè)長(cháng)鏈接。什么是短鏈接 短鏈接,一般來(lái)說(shuō)就是通過(guò)程序計算的方式將一個(gè)長(cháng)的URL URL 轉換成一個(gè)短的URL 字符串。短鏈接服務(wù)
國內各大微博都推出了自己的短鏈接服務(wù)。比如新浪微博、騰訊微博等。
為什么選擇新浪微博API新浪微博短鏈接API是開(kāi)放的 新浪微博短鏈接API不需要用戶(hù)登錄文檔查詢(xún)鏈接使用方法
拿到自己的AppKey后,只需替換類(lèi)的成員屬性$appKey的值即可,如下圖,$shortUrl為API請求地址
// APPkey,我在網(wǎng)上找的(https://fengmk2.com/blog/appkey.html),可以自己申請
protected $appKey = '569452181';
// 轉短連接API地址
protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';
其他的,基本不需要配置,直接實(shí)例化類(lèi)ShortLink,然后調用getShortUrl方法,需要注意的是長(cháng)鏈接URL數組$longUrl中的值可以傳多個(gè)值
當然,為了方便,我把它寫(xiě)成一個(gè)類(lèi),可以根據自己的需要進(jìn)行調整,滿(mǎn)足自己的需求。
源代碼
<p>
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(wordpress網(wǎng)站可以寫(xiě)php代碼1.php文件測試.php)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 76 次瀏覽 ? 2021-10-19 07:08
據說(shuō)wordpress網(wǎng)站可以在發(fā)帖時(shí)將文章同步到新浪微博,想寫(xiě)一個(gè)php代碼測試基于同樣的方法。以下內容引自:
微博同步方式大致有插件、關(guān)聯(lián)博客、非插件微博三種方式
第一種是直接在百度上搜索;
其次,因為新浪現在取消了鏈接博客的選項,但該功能并未取消??梢栽?xún)問(wèn)下面的地址,然后進(jìn)行配置。
第三種方法需要使用新浪的接口,如下:
1) 前往新浪微博開(kāi)放平臺創(chuàng )建站內應用。審核不通過(guò)沒(méi)關(guān)系,但是如果通過(guò)了,可以在微博底部展示來(lái)自XX的應用,比如來(lái)自KingGoo科技博客的圖片。如何創(chuàng )建它?在百度google上搜索,很簡(jiǎn)單(但是如果你沒(méi)有通過(guò)審核想通過(guò)審核,我可以提供付費幫助嘎嘎~),創(chuàng )建應用后,需要使用App Key申請下面的應用程序;
2)編輯你的主題的functions.php文件并在最后添加以下代碼
// 微博同步function post_to_sina_weibo($post_ID) { if( wp_is_post_revision($post_ID) ) return; $get_post_info = get_post($post_ID); $get_post_centent = get_post($post_ID)->post_content; //去掉文章內的html編碼的空格、換行、tab等符號(如果你文章的編碼格式是這樣子,可以將下面的"//"去掉即開(kāi)啟此功能) //$get_post_centent = str_replace("\t", " ", str_replace("\n", " ", str_replace(" ", " ", $get_post_centent))); $get_post_title = get_post($post_ID)->post_title; if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) { $request = new WP_Http; $status = '【' . strip_tags( $get_post_title ) . '】 ' . mb_strimwidth(strip_tags( apply_filters('the_content', $get_post_centent)),0, 132,'...') . ' 全文地址:' . get_permalink($post_ID) ; $api_url = 'https://api.weibo.com/2/statuses/update.json'; $body = array( 'status' => $status, 'source'=>'4135063399'); $headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' ); /* 如果你使用改方法,請注釋掉上面$headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' ); 換成如下代碼 //你的新浪微博登陸名 $username = '' ; //你的新浪微博登陸密碼 $password = '' ; $headers = array( 'Authorization' => 'Basic ' . base64_encode('$username:$password')); */ $result = $request->post( $api_url , array( 'body' => $body, 'headers' => $headers ) ); }}add_action('publish_post', 'post_to_sina_weibo', 0);
文章需要用到wordpress自帶的WP_Http類(lèi),我在github上找到了替代品:
關(guān)于這個(gè)類(lèi)的一個(gè)說(shuō)明:EasyHttp是一個(gè)php類(lèi),可以幫助你忽略不同的php環(huán)境條件,亂發(fā)送http請求。您不再需要關(guān)注當前的 php 環(huán)境是否支持 curl/fsockopen/fopen,EasyHttp 會(huì )自動(dòng)選擇最合適的方式進(jìn)行 http 請求。EasyHttp 派生自 WordPress 中的 WP_Http 類(lèi),它去除了對其他 WordPress 功能的所有依賴(lài),將其拆分為不同的文件,并進(jìn)行了少量的簡(jiǎn)化。
根據以上內容,編寫(xiě)php代碼1.php:
當瀏覽器訪(fǎng)問(wèn)1.php時(shí),返回如下內容:
Array ([headers] => Array ([server] => nginx/1.2.0 [date] => Sun, 13 Oct 2013 02:23:46 GMT [content-type] => text/plain;charset=UTF-8 [content-length] => 76 [connection] => close [api-server-ip] => 10.75.0.170 [變化] => Accept-Encoding [x-varnish] => 3299864740 [age] => 0 [via] => 1.1 varnish) [body] => Bad Content-Type header value:'application/ x-www-form-urlencoded; charset=' [response] => Array ([code] => 400 [message] => Bad Request) [cookies] => Array () [filename] =>)
好像是 400 Bad Request。百度一下,意思是“由于語(yǔ)法格式錯誤,服務(wù)器無(wú)法理解這個(gè)請求。不修改,客戶(hù)端程序不能重復這個(gè)請求?!?br /> 你怎么解決這個(gè)問(wèn)題? 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(wordpress網(wǎng)站可以寫(xiě)php代碼1.php文件測試.php)
據說(shuō)wordpress網(wǎng)站可以在發(fā)帖時(shí)將文章同步到新浪微博,想寫(xiě)一個(gè)php代碼測試基于同樣的方法。以下內容引自:
微博同步方式大致有插件、關(guān)聯(lián)博客、非插件微博三種方式
第一種是直接在百度上搜索;
其次,因為新浪現在取消了鏈接博客的選項,但該功能并未取消??梢栽?xún)問(wèn)下面的地址,然后進(jìn)行配置。
第三種方法需要使用新浪的接口,如下:
1) 前往新浪微博開(kāi)放平臺創(chuàng )建站內應用。審核不通過(guò)沒(méi)關(guān)系,但是如果通過(guò)了,可以在微博底部展示來(lái)自XX的應用,比如來(lái)自KingGoo科技博客的圖片。如何創(chuàng )建它?在百度google上搜索,很簡(jiǎn)單(但是如果你沒(méi)有通過(guò)審核想通過(guò)審核,我可以提供付費幫助嘎嘎~),創(chuàng )建應用后,需要使用App Key申請下面的應用程序;
2)編輯你的主題的functions.php文件并在最后添加以下代碼
// 微博同步function post_to_sina_weibo($post_ID) { if( wp_is_post_revision($post_ID) ) return; $get_post_info = get_post($post_ID); $get_post_centent = get_post($post_ID)->post_content; //去掉文章內的html編碼的空格、換行、tab等符號(如果你文章的編碼格式是這樣子,可以將下面的"//"去掉即開(kāi)啟此功能) //$get_post_centent = str_replace("\t", " ", str_replace("\n", " ", str_replace(" ", " ", $get_post_centent))); $get_post_title = get_post($post_ID)->post_title; if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) { $request = new WP_Http; $status = '【' . strip_tags( $get_post_title ) . '】 ' . mb_strimwidth(strip_tags( apply_filters('the_content', $get_post_centent)),0, 132,'...') . ' 全文地址:' . get_permalink($post_ID) ; $api_url = 'https://api.weibo.com/2/statuses/update.json'; $body = array( 'status' => $status, 'source'=>'4135063399'); $headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' ); /* 如果你使用改方法,請注釋掉上面$headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' ); 換成如下代碼 //你的新浪微博登陸名 $username = '' ; //你的新浪微博登陸密碼 $password = '' ; $headers = array( 'Authorization' => 'Basic ' . base64_encode('$username:$password')); */ $result = $request->post( $api_url , array( 'body' => $body, 'headers' => $headers ) ); }}add_action('publish_post', 'post_to_sina_weibo', 0);
文章需要用到wordpress自帶的WP_Http類(lèi),我在github上找到了替代品:
關(guān)于這個(gè)類(lèi)的一個(gè)說(shuō)明:EasyHttp是一個(gè)php類(lèi),可以幫助你忽略不同的php環(huán)境條件,亂發(fā)送http請求。您不再需要關(guān)注當前的 php 環(huán)境是否支持 curl/fsockopen/fopen,EasyHttp 會(huì )自動(dòng)選擇最合適的方式進(jìn)行 http 請求。EasyHttp 派生自 WordPress 中的 WP_Http 類(lèi),它去除了對其他 WordPress 功能的所有依賴(lài),將其拆分為不同的文件,并進(jìn)行了少量的簡(jiǎn)化。
根據以上內容,編寫(xiě)php代碼1.php:
當瀏覽器訪(fǎng)問(wèn)1.php時(shí),返回如下內容:
Array ([headers] => Array ([server] => nginx/1.2.0 [date] => Sun, 13 Oct 2013 02:23:46 GMT [content-type] => text/plain;charset=UTF-8 [content-length] => 76 [connection] => close [api-server-ip] => 10.75.0.170 [變化] => Accept-Encoding [x-varnish] => 3299864740 [age] => 0 [via] => 1.1 varnish) [body] => Bad Content-Type header value:'application/ x-www-form-urlencoded; charset=' [response] => Array ([code] => 400 [message] => Bad Request) [cookies] => Array () [filename] =>)
好像是 400 Bad Request。百度一下,意思是“由于語(yǔ)法格式錯誤,服務(wù)器無(wú)法理解這個(gè)請求。不修改,客戶(hù)端程序不能重復這個(gè)請求?!?br /> 你怎么解決這個(gè)問(wèn)題?
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(WeiboSDK新浪微博SDKv3源碼和示例(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 58 次瀏覽 ? 2021-10-18 00:17
WeiboSDK 新浪微博SDK v3 源代碼和示例前言
時(shí)間過(guò)得真快,距離上次SDK更新已經(jīng)3年多了。隨著(zhù)正式版的不斷更新,老SDK的部分接口已經(jīng)不能正常使用了。于是,QQ群里抱怨辱罵的朋友開(kāi)始增多。隨著(zhù)時(shí)代的發(fā)展,微博已經(jīng)被微信徹底甩掉,失去了興趣;同時(shí),對于我自己來(lái)說(shuō),在這個(gè)行業(yè)里為了生存而生存幾年后,日子越來(lái)越不好過(guò),我沒(méi)有時(shí)間。然后和新浪官方同步更新SDK,所以自13年之后,V2版本的SDK就沒(méi)有再更新了。雖然微博的風(fēng)潮沒(méi)了,但還是有很多朋友通過(guò)新浪開(kāi)放平臺頁(yè)面下載了我發(fā)布的SDK??梢哉f(shuō),由于長(cháng)期不更新,老版本嚴重誤導了新朋友。這也是我開(kāi)發(fā)的。SDK 新版本的另一個(gè)重要原因。SDK第三版的一些說(shuō)明
指示
第一步是初始化客戶(hù)端
如果用戶(hù)沒(méi)有被授權
使用微博開(kāi)放平臺后臺提供的appkey、appsecret、callback_url初始化客戶(hù)端。
", "", "");">
var openAuth = new SinaWeiboClient("", "", "");
然后獲取授權頁(yè)面地址,訪(fǎng)問(wèn)授權地址,獲取Authorization_Code
var url = openAuth.GetAuthorizationUrl();
根據返回的Code兌換AccessToken
openAuth.GetAccessTokenByCode("[CODE]");
if(openAuth.IsAuthorized)
{
var accessToken = openAuth.AccessToken;
var uid = openAuth.UID;
}
重要的?。?!獲取到AccessToken和UID后,請保存這兩個(gè)數據,以后的接口調用會(huì )直接使用這兩個(gè)參數,所以不需要每次都執行第一步和第二步。
接下來(lái)就可以跳轉到第二步調用官方API了。
當然,如果你之前已經(jīng)被授權并且已經(jīng)獲得了AccessToken和UID,那么使用下面的方法來(lái)初始化客戶(hù)端。
", "", "", "");">
var openAuth = new SinaWeiboClient("", "", "", "");
之后就可以直接跳轉到第二步調用API了。
第二步調用接口
這里提供了Get和Post兩個(gè)方法調用官方API,也提供了異步支持。使用時(shí)根據官方文檔的要求選擇是使用Get還是Post調用API(調用方法在官方文檔中有明確說(shuō)明)。
調用接口傳遞參數有兩種方式。一個(gè)是傳入一個(gè)Dictionary類(lèi)型的參數組,一個(gè)是傳入一個(gè)名為new的匿名類(lèi)。我個(gè)人認為使用匿名類(lèi)是非??茖W(xué)的。
例如調用API獲取當前登錄用戶(hù)的最新微博
{{"count", 5},{"page", 1},{"base_app", 0}}); //這里可以使用字典或者匿名類(lèi)來(lái)傳遞參數,參數名,大小寫(xiě),參數順序和規范請參考官方api文檔 if (result.IsSuccessStatusCode){Console.WriteLine(result.Content.ReadAsStringAsync( ).結果);}">
var result = openAuth.HttpGet("statuses/friends_timeline.json",
new Dictionary
{
{"count", 5},
{"page", 1},
{"base_app" , 0}
}); //這里可以使用字典或者匿名類(lèi)的方式傳遞參數,參數名稱(chēng)、大小寫(xiě)、參數順序和規范請參照官方api文檔
if (result.IsSuccessStatusCode)
{
Console.WriteLine(result.Content.ReadAsStringAsync().Result);
}
另外,如果需要異步調用,請參考下面的例子。
對象的類(lèi)型也可以直接傳入匿名類(lèi)。參數對應官方api文檔中的參數 new {uid = openAuth.UID});response.ContinueWith(task =>{//asynchronous processing result});">
// 調用獲取獲取用戶(hù)信息api
// 參考:http://open.weibo.com/wiki/2/users/show
var response = openAuth.HttpGetAsync("users/show.json",
//可以傳入一個(gè)Dictionary類(lèi)型的對象,也可以直接傳入一個(gè)匿名類(lèi)。參數與官方api文檔中的參數相對應
new {
uid = openAuth.UID
});
response.ContinueWith(task =>{
//異步處理結果
});
如果使用.net4.5,可以直接使用async和await關(guān)鍵字來(lái)簡(jiǎn)化上述操作。
另外,由于新浪官方限制現在產(chǎn)生了登錄驗證碼,新版SDK不再提供之前版本的模擬登錄獲取授權(ClientLogin)。對于Winform和Console應用,可以參考NetDimension.OpenAuth.Winform類(lèi),該類(lèi)提供了擴展方法,可以在上述兩種項目類(lèi)型中彈出授權窗口,并在用戶(hù)授權后自動(dòng)獲取Authorization_Code。具體操作請參見(jiàn)Winform和Console示例代碼。
using NetDimension.OpenAuth.Winform;
...
var form = openAuth.GetAuthenticationForm();
if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Console.WriteLine("用戶(hù)授權成功!");
var accessToken = openAuth.AccessToken;
var uid = openAuth.UID;
//其他操作
//...
}
else
{
Console.WriteLine("用戶(hù)授權失??!");
}
執行上述代碼時(shí),會(huì )彈出下圖所示的窗口。
用戶(hù)登錄后,SDK 會(huì )使用正則表達式從回調地址中獲取 Authorization_Code。
關(guān)于源代碼中的例子
例子沒(méi)什么好說(shuō)的。源代碼中有三個(gè)示例。它們是一個(gè) MVC 網(wǎng)頁(yè)示例、兩個(gè)桌面控制臺和 WinForm 示例。
示例中,明文寫(xiě)了一組APPKey以及對應的Secret和回調地址。如果你不改變它,這個(gè)例子應該可以正常工作。如果改成自己的Key出現錯誤,請自行谷歌設置回調地址。
MVC 的示例設置稍微復雜一些。需要修改IIS Express的配置,使得網(wǎng)站可以通過(guò)127.0.0.1或192.16 8.0.100這樣的IP地址是可以訪(fǎng)問(wèn)的,否則在回調過(guò)程中無(wú)法訪(fǎng)問(wèn)。MVC示例的主頁(yè)上有修改教程。如果示例不起作用,請打開(kāi) Views\Home\Index.cshtml 查看是否已修改。
Winform 示例運行截圖
網(wǎng)站示例運行截圖
還有一點(diǎn)需要注意的是,如果你使用的是VS2015,IIS Express配置文件applicationhost.config的地址不再是“Documents\IIS Express\”,而是在項目地址下的.vs目錄下,這是一個(gè)隱藏目錄, 直接在地址欄中輸入路徑即可訪(fǎng)問(wèn)。
控制臺示例運行的屏幕截圖
有調用騰訊微博的例子,但是騰訊的要求很?chē)栏?。申請app需要網(wǎng)站驗證,因為我用的是朋友的網(wǎng)站,所以請有需要的朋友或者自己注冊app(騰訊微博開(kāi)發(fā)者平臺的api文檔服務(wù)器是不是掛了?反正,我提不起來(lái)。)另外,在騰訊的例子中,有一種在微博上發(fā)圖片的方法,嚴格按照騰訊api文檔寫(xiě)的,但是不能正常使用。如果有朋友知道原因,請告訴我們。騰訊的例子只是為了說(shuō)明新版SDK可以通過(guò)繼承方便的擴展到微信開(kāi)放平臺、人人網(wǎng)等其他平臺。請了解如何使用它。
示例代碼已收錄在源代碼中,具體請自行查閱代碼。
以上是新版本的全部?jì)热荨?br /> 正如開(kāi)頭所說(shuō),新浪微博覺(jué)得大勢已去,所以本次微博SDK不會(huì )更新新版本。本SDK第三版為最終版本,僅用于維護和BUG修正,不再添加或更新新內容。如果有繼續對新浪開(kāi)發(fā)平臺感興趣的朋友,請到GitHub上克隆代碼,根據需要擴展功能。
最后感謝QQ群里的所有朋友這幾年的支持和鼓勵,謝謝。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(WeiboSDK新浪微博SDKv3源碼和示例(圖))
WeiboSDK 新浪微博SDK v3 源代碼和示例前言
時(shí)間過(guò)得真快,距離上次SDK更新已經(jīng)3年多了。隨著(zhù)正式版的不斷更新,老SDK的部分接口已經(jīng)不能正常使用了。于是,QQ群里抱怨辱罵的朋友開(kāi)始增多。隨著(zhù)時(shí)代的發(fā)展,微博已經(jīng)被微信徹底甩掉,失去了興趣;同時(shí),對于我自己來(lái)說(shuō),在這個(gè)行業(yè)里為了生存而生存幾年后,日子越來(lái)越不好過(guò),我沒(méi)有時(shí)間。然后和新浪官方同步更新SDK,所以自13年之后,V2版本的SDK就沒(méi)有再更新了。雖然微博的風(fēng)潮沒(méi)了,但還是有很多朋友通過(guò)新浪開(kāi)放平臺頁(yè)面下載了我發(fā)布的SDK??梢哉f(shuō),由于長(cháng)期不更新,老版本嚴重誤導了新朋友。這也是我開(kāi)發(fā)的。SDK 新版本的另一個(gè)重要原因。SDK第三版的一些說(shuō)明
指示
第一步是初始化客戶(hù)端
如果用戶(hù)沒(méi)有被授權
使用微博開(kāi)放平臺后臺提供的appkey、appsecret、callback_url初始化客戶(hù)端。
", "", "");">
var openAuth = new SinaWeiboClient("", "", "");
然后獲取授權頁(yè)面地址,訪(fǎng)問(wèn)授權地址,獲取Authorization_Code
var url = openAuth.GetAuthorizationUrl();
根據返回的Code兌換AccessToken
openAuth.GetAccessTokenByCode("[CODE]");
if(openAuth.IsAuthorized)
{
var accessToken = openAuth.AccessToken;
var uid = openAuth.UID;
}
重要的?。?!獲取到AccessToken和UID后,請保存這兩個(gè)數據,以后的接口調用會(huì )直接使用這兩個(gè)參數,所以不需要每次都執行第一步和第二步。
接下來(lái)就可以跳轉到第二步調用官方API了。
當然,如果你之前已經(jīng)被授權并且已經(jīng)獲得了AccessToken和UID,那么使用下面的方法來(lái)初始化客戶(hù)端。
", "", "", "");">
var openAuth = new SinaWeiboClient("", "", "", "");
之后就可以直接跳轉到第二步調用API了。
第二步調用接口
這里提供了Get和Post兩個(gè)方法調用官方API,也提供了異步支持。使用時(shí)根據官方文檔的要求選擇是使用Get還是Post調用API(調用方法在官方文檔中有明確說(shuō)明)。
調用接口傳遞參數有兩種方式。一個(gè)是傳入一個(gè)Dictionary類(lèi)型的參數組,一個(gè)是傳入一個(gè)名為new的匿名類(lèi)。我個(gè)人認為使用匿名類(lèi)是非??茖W(xué)的。
例如調用API獲取當前登錄用戶(hù)的最新微博
{{"count", 5},{"page", 1},{"base_app", 0}}); //這里可以使用字典或者匿名類(lèi)來(lái)傳遞參數,參數名,大小寫(xiě),參數順序和規范請參考官方api文檔 if (result.IsSuccessStatusCode){Console.WriteLine(result.Content.ReadAsStringAsync( ).結果);}">
var result = openAuth.HttpGet("statuses/friends_timeline.json",
new Dictionary
{
{"count", 5},
{"page", 1},
{"base_app" , 0}
}); //這里可以使用字典或者匿名類(lèi)的方式傳遞參數,參數名稱(chēng)、大小寫(xiě)、參數順序和規范請參照官方api文檔
if (result.IsSuccessStatusCode)
{
Console.WriteLine(result.Content.ReadAsStringAsync().Result);
}
另外,如果需要異步調用,請參考下面的例子。
對象的類(lèi)型也可以直接傳入匿名類(lèi)。參數對應官方api文檔中的參數 new {uid = openAuth.UID});response.ContinueWith(task =>{//asynchronous processing result});">
// 調用獲取獲取用戶(hù)信息api
// 參考:http://open.weibo.com/wiki/2/users/show
var response = openAuth.HttpGetAsync("users/show.json",
//可以傳入一個(gè)Dictionary類(lèi)型的對象,也可以直接傳入一個(gè)匿名類(lèi)。參數與官方api文檔中的參數相對應
new {
uid = openAuth.UID
});
response.ContinueWith(task =>{
//異步處理結果
});
如果使用.net4.5,可以直接使用async和await關(guān)鍵字來(lái)簡(jiǎn)化上述操作。
另外,由于新浪官方限制現在產(chǎn)生了登錄驗證碼,新版SDK不再提供之前版本的模擬登錄獲取授權(ClientLogin)。對于Winform和Console應用,可以參考NetDimension.OpenAuth.Winform類(lèi),該類(lèi)提供了擴展方法,可以在上述兩種項目類(lèi)型中彈出授權窗口,并在用戶(hù)授權后自動(dòng)獲取Authorization_Code。具體操作請參見(jiàn)Winform和Console示例代碼。
using NetDimension.OpenAuth.Winform;
...
var form = openAuth.GetAuthenticationForm();
if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Console.WriteLine("用戶(hù)授權成功!");
var accessToken = openAuth.AccessToken;
var uid = openAuth.UID;
//其他操作
//...
}
else
{
Console.WriteLine("用戶(hù)授權失??!");
}
執行上述代碼時(shí),會(huì )彈出下圖所示的窗口。
用戶(hù)登錄后,SDK 會(huì )使用正則表達式從回調地址中獲取 Authorization_Code。
關(guān)于源代碼中的例子
例子沒(méi)什么好說(shuō)的。源代碼中有三個(gè)示例。它們是一個(gè) MVC 網(wǎng)頁(yè)示例、兩個(gè)桌面控制臺和 WinForm 示例。
示例中,明文寫(xiě)了一組APPKey以及對應的Secret和回調地址。如果你不改變它,這個(gè)例子應該可以正常工作。如果改成自己的Key出現錯誤,請自行谷歌設置回調地址。
MVC 的示例設置稍微復雜一些。需要修改IIS Express的配置,使得網(wǎng)站可以通過(guò)127.0.0.1或192.16 8.0.100這樣的IP地址是可以訪(fǎng)問(wèn)的,否則在回調過(guò)程中無(wú)法訪(fǎng)問(wèn)。MVC示例的主頁(yè)上有修改教程。如果示例不起作用,請打開(kāi) Views\Home\Index.cshtml 查看是否已修改。
Winform 示例運行截圖


網(wǎng)站示例運行截圖

還有一點(diǎn)需要注意的是,如果你使用的是VS2015,IIS Express配置文件applicationhost.config的地址不再是“Documents\IIS Express\”,而是在項目地址下的.vs目錄下,這是一個(gè)隱藏目錄, 直接在地址欄中輸入路徑即可訪(fǎng)問(wèn)。
控制臺示例運行的屏幕截圖

有調用騰訊微博的例子,但是騰訊的要求很?chē)栏?。申請app需要網(wǎng)站驗證,因為我用的是朋友的網(wǎng)站,所以請有需要的朋友或者自己注冊app(騰訊微博開(kāi)發(fā)者平臺的api文檔服務(wù)器是不是掛了?反正,我提不起來(lái)。)另外,在騰訊的例子中,有一種在微博上發(fā)圖片的方法,嚴格按照騰訊api文檔寫(xiě)的,但是不能正常使用。如果有朋友知道原因,請告訴我們。騰訊的例子只是為了說(shuō)明新版SDK可以通過(guò)繼承方便的擴展到微信開(kāi)放平臺、人人網(wǎng)等其他平臺。請了解如何使用它。
示例代碼已收錄在源代碼中,具體請自行查閱代碼。
以上是新版本的全部?jì)热荨?br /> 正如開(kāi)頭所說(shuō),新浪微博覺(jué)得大勢已去,所以本次微博SDK不會(huì )更新新版本。本SDK第三版為最終版本,僅用于維護和BUG修正,不再添加或更新新內容。如果有繼續對新浪開(kāi)發(fā)平臺感興趣的朋友,請到GitHub上克隆代碼,根據需要擴展功能。
最后感謝QQ群里的所有朋友這幾年的支持和鼓勵,謝謝。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(直播服務(wù)器端安裝及下載地址:PPVOD頻道的輸入與輸出寫(xiě)法)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 111 次瀏覽 ? 2021-10-17 17:33
應用場(chǎng)景:
某幼兒園需要將教室的攝像頭監控畫(huà)面廣播到互聯(lián)網(wǎng)上,家長(cháng)可以通過(guò)網(wǎng)絡(luò )直播了解孩子在校情況。
幼兒園安裝了某品牌的攝像頭,攝像頭的編碼為H264編碼,網(wǎng)絡(luò )攝像頭的訪(fǎng)問(wèn)地址為:rtsp://admin:[emailprotected]:554/h264/ch1/main/av_stream,其中可以通過(guò)VLC軟件查看地址的直播畫(huà)面。
網(wǎng)絡(luò )和硬件構建如下:
從上圖可以看出,一臺普通電腦和一套直播管理軟件就可以在幼兒園現場(chǎng)采集攝像機的RTSP地址,然后通過(guò)客戶(hù)端私有發(fā)送到網(wǎng)絡(luò )服務(wù)器的直播平臺。協(xié)議。一種觀(guān)看直播監控畫(huà)面的手機。
客戶(hù)端通道的輸入輸出寫(xiě)入
要使用私有協(xié)議,請在服務(wù)器端打開(kāi)端口 28002。輸入源寫(xiě)的是:client://client通道ID,寫(xiě)哪個(gè)通道字符串來(lái)接收哪個(gè)通道的流,輸出默認的HLS,并保存。
由于普通攝像頭不具備rtmp碼流的功能,需要使用直播軟件將獲取到的RTSP碼流推送到網(wǎng)絡(luò )服務(wù)器。PPVOD直播軟件不僅具有各種協(xié)議轉換功能,還能通過(guò)私有協(xié)議將流從本地推送到網(wǎng)絡(luò )。服務(wù)器。PPVOD直播軟件的客戶(hù)端私有協(xié)議傳輸安全性高,頻道識別隨機性強,隱蔽性好,不能被外界破解。它是流媒體的最佳選擇。
該方案成本低,無(wú)需特殊相機設置,應用范圍廣。目前,市場(chǎng)上90%以上的攝像機使用h264編碼,無(wú)需轉碼。如果攝像機的音頻不標準或者沒(méi)有音頻輸入,我們的直播平臺會(huì )做相應的處理,以滿(mǎn)足直播的需要。
如果攝像機端基于公網(wǎng)靜態(tài)IP環(huán)境,服務(wù)器端可以直接獲取攝像機的網(wǎng)絡(luò )rtsp地址作為輸入源,可以跳過(guò)在攝像機網(wǎng)絡(luò )安裝直播系統的步驟。
Live服務(wù)器端安裝下載地址:
PPVOD視頻點(diǎn)播系統下載地址:
PPVOD全能直播軟件下載地址: 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(直播服務(wù)器端安裝及下載地址:PPVOD頻道的輸入與輸出寫(xiě)法)
應用場(chǎng)景:
某幼兒園需要將教室的攝像頭監控畫(huà)面廣播到互聯(lián)網(wǎng)上,家長(cháng)可以通過(guò)網(wǎng)絡(luò )直播了解孩子在校情況。
幼兒園安裝了某品牌的攝像頭,攝像頭的編碼為H264編碼,網(wǎng)絡(luò )攝像頭的訪(fǎng)問(wèn)地址為:rtsp://admin:[emailprotected]:554/h264/ch1/main/av_stream,其中可以通過(guò)VLC軟件查看地址的直播畫(huà)面。
網(wǎng)絡(luò )和硬件構建如下:

從上圖可以看出,一臺普通電腦和一套直播管理軟件就可以在幼兒園現場(chǎng)采集攝像機的RTSP地址,然后通過(guò)客戶(hù)端私有發(fā)送到網(wǎng)絡(luò )服務(wù)器的直播平臺。協(xié)議。一種觀(guān)看直播監控畫(huà)面的手機。

客戶(hù)端通道的輸入輸出寫(xiě)入

要使用私有協(xié)議,請在服務(wù)器端打開(kāi)端口 28002。輸入源寫(xiě)的是:client://client通道ID,寫(xiě)哪個(gè)通道字符串來(lái)接收哪個(gè)通道的流,輸出默認的HLS,并保存。
由于普通攝像頭不具備rtmp碼流的功能,需要使用直播軟件將獲取到的RTSP碼流推送到網(wǎng)絡(luò )服務(wù)器。PPVOD直播軟件不僅具有各種協(xié)議轉換功能,還能通過(guò)私有協(xié)議將流從本地推送到網(wǎng)絡(luò )。服務(wù)器。PPVOD直播軟件的客戶(hù)端私有協(xié)議傳輸安全性高,頻道識別隨機性強,隱蔽性好,不能被外界破解。它是流媒體的最佳選擇。
該方案成本低,無(wú)需特殊相機設置,應用范圍廣。目前,市場(chǎng)上90%以上的攝像機使用h264編碼,無(wú)需轉碼。如果攝像機的音頻不標準或者沒(méi)有音頻輸入,我們的直播平臺會(huì )做相應的處理,以滿(mǎn)足直播的需要。
如果攝像機端基于公網(wǎng)靜態(tài)IP環(huán)境,服務(wù)器端可以直接獲取攝像機的網(wǎng)絡(luò )rtsp地址作為輸入源,可以跳過(guò)在攝像機網(wǎng)絡(luò )安裝直播系統的步驟。
Live服務(wù)器端安裝下載地址:
PPVOD視頻點(diǎn)播系統下載地址:
PPVOD全能直播軟件下載地址:
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(歷時(shí)三天,新浪微博APP分享是未審核的應用了 )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 92 次瀏覽 ? 2021-10-17 16:14
)
新浪微博開(kāi)放平臺申請已通過(guò)審核,歷時(shí)三天??磥?lái)這沒(méi)什么,還是寫(xiě)下來(lái)分享一下吧。下次共享不再是未經(jīng)審查的應用程序。這個(gè)新浪APP。. . . 申請的時(shí)候還以為不會(huì )通過(guò),因為我的域名沒(méi)有注冊。就像百度聯(lián)盟一樣,如果是真的就好了。新浪微博APP功能及性能:2.1個(gè)崩潰的應用程序將被拒絕;2.2個(gè)有錯誤的應用將被拒絕;2.3 不匹配開(kāi)發(fā)者的推廣應用將被拒絕;2.4 沒(méi)有申請文件或隱藏功能與描述不符的應用將被拒絕;2.5 使用非公開(kāi) API 的應用將被拒絕;2. 6 在指定容器外讀寫(xiě)數據的應用將被拒絕;2.7 以任何方式或形式下載代碼的應用將被拒絕;2.8 安裝或發(fā)布其他可執行代碼2.9 演示版、試用版和測試版的申請將被拒絕;2.10個(gè)與新浪微博開(kāi)放平臺現有申請重復的申請可能會(huì )被拒絕,尤其是數量大的時(shí)候;2.11個(gè)沒(méi)有明顯目的或提供任何持久娛樂(lè )價(jià)值的應用程序可能會(huì )被拒絕;2.12個(gè)主要內容為營(yíng)銷(xiāo)或廣告的應用程序將被拒絕;2.13個(gè)欺騙性或虛假功能,未明確標記的應用程序將被拒絕;2. 14 互聯(lián)網(wǎng)瀏覽應用必須使用新浪微博開(kāi)放平臺提供的網(wǎng)頁(yè)框架;2.15 提供 診斷錯誤或其他不準確數據的申請將被拒絕;2.16 將大量類(lèi)似版本應用上傳至新浪微博開(kāi)放平臺的開(kāi)發(fā)者將被移除開(kāi)發(fā)者項目;2.17個(gè)使用非法文件共享的應用將被拒絕;2.18個(gè)旨在用作非法賭博輔助工具(包括算牌)的應用程序將被拒絕;2. 19 具有匿名或惡作劇功能或發(fā)送類(lèi)似短信/彩信功能的應用程序將被拒絕;2.20名開(kāi)發(fā)者開(kāi)發(fā)秘密采集用戶(hù)密碼或用戶(hù)隱私數據的應用程序將從新浪微博開(kāi)放平臺下架;2. 21 應用程序中不允許彈出窗口;2.22 申請內容訪(fǎng)問(wèn)速度過(guò)慢,內容響應速度平均超過(guò)6秒,會(huì )被拒絕。最后,上圖:
查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(歷時(shí)三天,新浪微博APP分享是未審核的應用了
)
新浪微博開(kāi)放平臺申請已通過(guò)審核,歷時(shí)三天??磥?lái)這沒(méi)什么,還是寫(xiě)下來(lái)分享一下吧。下次共享不再是未經(jīng)審查的應用程序。這個(gè)新浪APP。. . . 申請的時(shí)候還以為不會(huì )通過(guò),因為我的域名沒(méi)有注冊。就像百度聯(lián)盟一樣,如果是真的就好了。新浪微博APP功能及性能:2.1個(gè)崩潰的應用程序將被拒絕;2.2個(gè)有錯誤的應用將被拒絕;2.3 不匹配開(kāi)發(fā)者的推廣應用將被拒絕;2.4 沒(méi)有申請文件或隱藏功能與描述不符的應用將被拒絕;2.5 使用非公開(kāi) API 的應用將被拒絕;2. 6 在指定容器外讀寫(xiě)數據的應用將被拒絕;2.7 以任何方式或形式下載代碼的應用將被拒絕;2.8 安裝或發(fā)布其他可執行代碼2.9 演示版、試用版和測試版的申請將被拒絕;2.10個(gè)與新浪微博開(kāi)放平臺現有申請重復的申請可能會(huì )被拒絕,尤其是數量大的時(shí)候;2.11個(gè)沒(méi)有明顯目的或提供任何持久娛樂(lè )價(jià)值的應用程序可能會(huì )被拒絕;2.12個(gè)主要內容為營(yíng)銷(xiāo)或廣告的應用程序將被拒絕;2.13個(gè)欺騙性或虛假功能,未明確標記的應用程序將被拒絕;2. 14 互聯(lián)網(wǎng)瀏覽應用必須使用新浪微博開(kāi)放平臺提供的網(wǎng)頁(yè)框架;2.15 提供 診斷錯誤或其他不準確數據的申請將被拒絕;2.16 將大量類(lèi)似版本應用上傳至新浪微博開(kāi)放平臺的開(kāi)發(fā)者將被移除開(kāi)發(fā)者項目;2.17個(gè)使用非法文件共享的應用將被拒絕;2.18個(gè)旨在用作非法賭博輔助工具(包括算牌)的應用程序將被拒絕;2. 19 具有匿名或惡作劇功能或發(fā)送類(lèi)似短信/彩信功能的應用程序將被拒絕;2.20名開(kāi)發(fā)者開(kāi)發(fā)秘密采集用戶(hù)密碼或用戶(hù)隱私數據的應用程序將從新浪微博開(kāi)放平臺下架;2. 21 應用程序中不允許彈出窗口;2.22 申請內容訪(fǎng)問(wèn)速度過(guò)慢,內容響應速度平均超過(guò)6秒,會(huì )被拒絕。最后,上圖:



使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(獲得新浪微博AccessToken的步驟是怎樣的?(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 86 次瀏覽 ? 2021-10-17 04:02
獲得新浪微博AccessToken的步驟是這樣的
參考:%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E
1.首先讓用戶(hù)授權你的APP獲取代碼
例如:點(diǎn)擊下方鏈接授權后,在url上會(huì )得到一個(gè)code參數
://
2.將此代碼發(fā)送到服務(wù)器接口。服務(wù)端收到代碼后,執行下載文件中的代碼返回AccessToken(或直接從服務(wù)端獲取Token,執行微博API的各種操作)
代碼示例:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.weibo.com/oauth2/access_token");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded;";
request.Headers.Add(string.Format("Authorization: key={0}", "123456"));
string postData = "client_id=123456";
postData += ("&client_secret=123456");
postData += ("&grant_type=authorization_code");
postData += ("&redirect_uri=http://www.cfxixi.com");
postData += ("&code=123456");
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
//發(fā)出Request
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string responseStr = reader.ReadToEnd();
reader.Close();
responseStream.Close();
response.Close();
Demo下載可以到我的Q群分享下載250395324 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(獲得新浪微博AccessToken的步驟是怎樣的?(圖))
獲得新浪微博AccessToken的步驟是這樣的
參考:%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E

1.首先讓用戶(hù)授權你的APP獲取代碼
例如:點(diǎn)擊下方鏈接授權后,在url上會(huì )得到一個(gè)code參數
://
2.將此代碼發(fā)送到服務(wù)器接口。服務(wù)端收到代碼后,執行下載文件中的代碼返回AccessToken(或直接從服務(wù)端獲取Token,執行微博API的各種操作)
代碼示例:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.weibo.com/oauth2/access_token");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded;";
request.Headers.Add(string.Format("Authorization: key={0}", "123456"));
string postData = "client_id=123456";
postData += ("&client_secret=123456");
postData += ("&grant_type=authorization_code");
postData += ("&redirect_uri=http://www.cfxixi.com");
postData += ("&code=123456");
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
//發(fā)出Request
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string responseStr = reader.ReadToEnd();
reader.Close();
responseStream.Close();
response.Close();
Demo下載可以到我的Q群分享下載250395324
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺文章同步到新浪微博的幾種方法(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 65 次瀏覽 ? 2021-10-16 16:27
.
WordPress文章同步新浪微博的幾種方式
相信現在很多網(wǎng)友都用過(guò)微博了,微博也挺火的!在使用WordPress的博主中,使用微博的人數可能更多,因為博客圈里有一種觀(guān)點(diǎn):微博是一個(gè)很好的推廣平臺。新浪微博是比較流行的一種。也許你聽(tīng)說(shuō)過(guò)如何將WordPress 文章 同步發(fā)布到新浪微博,但我在這里不得不啰嗦一下。它可能與您之前看到的有所不同。. 插件的方法我就不介紹了,大家需要上網(wǎng)搜一下。
方法一:關(guān)聯(lián)博客。方法一其實(shí)很簡(jiǎn)單。您可以直接使用新浪微博的關(guān)聯(lián)博客功能。使用方法:點(diǎn)擊新浪微博右上角的“工具”菜單,然后點(diǎn)擊“關(guān)聯(lián)博客”填寫(xiě)你的博客鏈接!這樣,你的博客每更新一次文章,就會(huì )同時(shí)發(fā)送一條格式如下的微博到新浪微博:文章Title + 文章 URL 方式二:微博開(kāi)放平臺界面
方法一只能以文章標題+文章 URL的形式同步到新浪微博,微博內容無(wú)法自定義。使用新浪微博的開(kāi)放平臺界面可以大大增加自由度,但是需要寫(xiě)一些代碼,其實(shí)很簡(jiǎn)單,復制粘貼代碼即可。打開(kāi)你的當前
使用主題目錄下的functions.php,復制以下代碼到第一個(gè) 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺文章同步到新浪微博的幾種方法(圖))
.
WordPress文章同步新浪微博的幾種方式
相信現在很多網(wǎng)友都用過(guò)微博了,微博也挺火的!在使用WordPress的博主中,使用微博的人數可能更多,因為博客圈里有一種觀(guān)點(diǎn):微博是一個(gè)很好的推廣平臺。新浪微博是比較流行的一種。也許你聽(tīng)說(shuō)過(guò)如何將WordPress 文章 同步發(fā)布到新浪微博,但我在這里不得不啰嗦一下。它可能與您之前看到的有所不同。. 插件的方法我就不介紹了,大家需要上網(wǎng)搜一下。
方法一:關(guān)聯(lián)博客。方法一其實(shí)很簡(jiǎn)單。您可以直接使用新浪微博的關(guān)聯(lián)博客功能。使用方法:點(diǎn)擊新浪微博右上角的“工具”菜單,然后點(diǎn)擊“關(guān)聯(lián)博客”填寫(xiě)你的博客鏈接!這樣,你的博客每更新一次文章,就會(huì )同時(shí)發(fā)送一條格式如下的微博到新浪微博:文章Title + 文章 URL 方式二:微博開(kāi)放平臺界面
方法一只能以文章標題+文章 URL的形式同步到新浪微博,微博內容無(wú)法自定義。使用新浪微博的開(kāi)放平臺界面可以大大增加自由度,但是需要寫(xiě)一些代碼,其實(shí)很簡(jiǎn)單,復制粘貼代碼即可。打開(kāi)你的當前
使用主題目錄下的functions.php,復制以下代碼到第一個(gè)
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博:山寨版的twitter,各種粉絲的登錄邏輯)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 239 次瀏覽 ? 2021-10-14 18:32
新浪微博:盜版推特,各種粉絲的集散地,天朝國人的最?lèi)?ài),基本上所有網(wǎng)友都有微博賬號,所以使用新浪微博賬號進(jìn)行三向登錄就顯得尤為重要改善用戶(hù)登錄體驗。這次我用Python3+Tornado5集成了微博登錄,記錄一下,還是有很多坑。
首先注冊微博開(kāi)放平臺:
選擇微鏈接-》網(wǎng)站訪(fǎng)問(wèn)=>立即訪(fǎng)問(wèn)創(chuàng )建新應用
應用創(chuàng )建成功后,會(huì )立即跳轉到審核頁(yè)面。您需要填寫(xiě)一些資格進(jìn)行審核。其實(shí)這些review的領(lǐng)域是不需要打理的,申請完全不需要通過(guò)review
直接拿到appkey和appsecret,然后馬上點(diǎn)擊高級信息填寫(xiě)回調URL
需要注意的是,回調授權和取消回調授權地址需要一致
那么新浪微博的登錄邏輯就很簡(jiǎn)單了:拼接url=>回調獲取code=>uid和access_token交換code=>使用access_token獲取用戶(hù)信息
首先第一步是拼接url,這里我們使用Tornado來(lái)編寫(xiě)控制器
#新浪微博登錄地址組合返回(第一步)
class SinaFirstHandler(BaseHandler):
def get(self,*args,**kwargs):
#微博接口地址
weibo_auth_url = "https://api.weibo.com/oauth2/authorize"
#回調網(wǎng)址
redirect_url = "http://127.0.0.1:8000/md_admin/weibo"
#應用id
client_id = "2636039333"
#組合url
auth_url = weibo_auth_url + "?client_id={client_id}&redirect_uri={re_url}".format(client_id=client_id,
re_url=redirect_url)
self.write(auth_url)
第二步,回調獲取code,交換access_token和uid
#新浪微博回調地址(第二步)
class SinaBackHandler(BaseHandler):
def get(self,*args,**kwargs):
#獲取回調的code
code = self.get_argument('code')
#微博認證地址
access_token_url = "https://api.weibo.com/oauth2/access_token"
#參數 向新浪接口發(fā)送請求
re_dict = requests.post(access_token_url,data={
"client_id": '2636039333',
"client_secret": "4e2fbdb39432c31dc5c2f90be3afa5ce",
"grant_type": "authorization_code",
"code": code,
"redirect_uri": "http://127.0.0.1:8000/md_admin/weibo",
})
re_dict = re_dict.text
re_dict = eval(re_dict)
print(re_dict.get('uid'))
self.write(re_dict)
接下來(lái)的情況就有點(diǎn)亂了,因為新浪規定,如果申請沒(méi)有通過(guò)審核,那么部分新浪接口是沒(méi)有權限請求的??梢哉f(shuō),你手上只有access_token和uid,其他的也改不了。我該怎么辦,沒(méi)有人會(huì )免費拿到營(yíng)業(yè)執照來(lái)測試接口,但是有一個(gè)曲線(xiàn)救國,就是在測試信息頁(yè)面上添加一個(gè)測試帳戶(hù)。添加測試賬號后,就可以請求相應的接口了。
最后使用你手上的access_token和uid獲取當前用戶(hù)的用戶(hù)名
result = requests.get('https://api.weibo.com/2/users/show.json',params={'access_token':res['access_token'],'uid':res['uid']})
result = json.loads(result.text)
print(result['name'])
可以看到接口請求成功
完成它。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博:山寨版的twitter,各種粉絲的登錄邏輯)
新浪微博:盜版推特,各種粉絲的集散地,天朝國人的最?lèi)?ài),基本上所有網(wǎng)友都有微博賬號,所以使用新浪微博賬號進(jìn)行三向登錄就顯得尤為重要改善用戶(hù)登錄體驗。這次我用Python3+Tornado5集成了微博登錄,記錄一下,還是有很多坑。
首先注冊微博開(kāi)放平臺:
選擇微鏈接-》網(wǎng)站訪(fǎng)問(wèn)=>立即訪(fǎng)問(wèn)創(chuàng )建新應用

應用創(chuàng )建成功后,會(huì )立即跳轉到審核頁(yè)面。您需要填寫(xiě)一些資格進(jìn)行審核。其實(shí)這些review的領(lǐng)域是不需要打理的,申請完全不需要通過(guò)review

直接拿到appkey和appsecret,然后馬上點(diǎn)擊高級信息填寫(xiě)回調URL

需要注意的是,回調授權和取消回調授權地址需要一致
那么新浪微博的登錄邏輯就很簡(jiǎn)單了:拼接url=>回調獲取code=>uid和access_token交換code=>使用access_token獲取用戶(hù)信息
首先第一步是拼接url,這里我們使用Tornado來(lái)編寫(xiě)控制器
#新浪微博登錄地址組合返回(第一步)
class SinaFirstHandler(BaseHandler):
def get(self,*args,**kwargs):
#微博接口地址
weibo_auth_url = "https://api.weibo.com/oauth2/authorize"
#回調網(wǎng)址
redirect_url = "http://127.0.0.1:8000/md_admin/weibo"
#應用id
client_id = "2636039333"
#組合url
auth_url = weibo_auth_url + "?client_id={client_id}&redirect_uri={re_url}".format(client_id=client_id,
re_url=redirect_url)
self.write(auth_url)
第二步,回調獲取code,交換access_token和uid
#新浪微博回調地址(第二步)
class SinaBackHandler(BaseHandler):
def get(self,*args,**kwargs):
#獲取回調的code
code = self.get_argument('code')
#微博認證地址
access_token_url = "https://api.weibo.com/oauth2/access_token"
#參數 向新浪接口發(fā)送請求
re_dict = requests.post(access_token_url,data={
"client_id": '2636039333',
"client_secret": "4e2fbdb39432c31dc5c2f90be3afa5ce",
"grant_type": "authorization_code",
"code": code,
"redirect_uri": "http://127.0.0.1:8000/md_admin/weibo",
})
re_dict = re_dict.text
re_dict = eval(re_dict)
print(re_dict.get('uid'))
self.write(re_dict)
接下來(lái)的情況就有點(diǎn)亂了,因為新浪規定,如果申請沒(méi)有通過(guò)審核,那么部分新浪接口是沒(méi)有權限請求的??梢哉f(shuō),你手上只有access_token和uid,其他的也改不了。我該怎么辦,沒(méi)有人會(huì )免費拿到營(yíng)業(yè)執照來(lái)測試接口,但是有一個(gè)曲線(xiàn)救國,就是在測試信息頁(yè)面上添加一個(gè)測試帳戶(hù)。添加測試賬號后,就可以請求相應的接口了。

最后使用你手上的access_token和uid獲取當前用戶(hù)的用戶(hù)名
result = requests.get('https://api.weibo.com/2/users/show.json',params={'access_token':res['access_token'],'uid':res['uid']})
result = json.loads(result.text)
print(result['name'])
可以看到接口請求成功

完成它。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(我要開(kāi)發(fā)一個(gè)基于sina微博開(kāi)放平臺的應用(App)(組圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 72 次瀏覽 ? 2021-10-14 18:31
本文文章主要介紹使用Java驗證通過(guò)OAuth協(xié)議發(fā)送微博的教程。它使用新浪微博為Java開(kāi)放的API weibo4j。有需要的朋友可以參考
新浪微博開(kāi)放平臺雖然提供了各種語(yǔ)言的開(kāi)發(fā)SDK下載,但也有基本接口調用的demo和接口說(shuō)明文檔。但是經(jīng)過(guò)這幾天的耐心嘗試,感覺(jué)新浪微博開(kāi)放平臺上的入門(mén)指南與下載的Java開(kāi)發(fā)包weibo4j包中的demo使用注釋有些不一致。再加上自我理解能力有限,導致了很多困惑。幸運的是,我并沒(méi)有放棄嘗試去理解它。廢話(huà)少說(shuō),以下是我的學(xué)習過(guò)程。
如果你想通過(guò)調用新浪微博開(kāi)放平臺API開(kāi)發(fā)自己的微博應用,首先要有一個(gè)新浪微博賬號和一個(gè)CSDN賬號,因為我們需要同時(shí)用這兩個(gè)賬號創(chuàng )建一個(gè)微博應用獲取App key和Secret key。App key和Secret key有什么用?
其實(shí)我只是看了新浪微博開(kāi)放平臺上的一系列解釋?zhuān)⒉皇呛芰私釧pp key和Secret key的使用。因為更重要的是了解OAuth認證授權的整個(gè)過(guò)程,以及幾個(gè)Token和4個(gè)URL在整個(gè)OAuth認證授權過(guò)程中的作用。
當我第一次遇到完全沒(méi)有概念的 OAuth 時(shí),我認為它是不可能學(xué)習的。幸好找到了下面的文章,對理解OAuth很有幫助。鏈接如下:
OAuth 有 3 個(gè)參與者,分別是 User、Service Provider 和 Consumer。假設我想開(kāi)發(fā)一個(gè)基于新浪微博開(kāi)放平臺的應用(App),供其他新浪微博用戶(hù)使用。它們的對應關(guān)系如下:
實(shí)際上,我們的App相當于User和Provider(新浪微博平臺)的第三方應用。作為第三方App,如果要訪(fǎng)問(wèn)用戶(hù)在新浪微博平臺上保存的資源,必須經(jīng)過(guò)一系列的認證和授權才能工作。
下面是根據我對整個(gè)OAuth認證和授權流程的理解繪制的圖(可以跳過(guò),對以下一些概念有一定了解后再回頭看這個(gè)流程圖):
結合上面的流程圖,下面是我對這些術(shù)語(yǔ)的理解以及對各個(gè)過(guò)程的描述:
消費者秘鑰和消費者秘鑰:在新浪微博開(kāi)放平臺上分別稱(chēng)為App秘鑰和秘鑰。消費者向提供者申請,希望能夠調用其開(kāi)放的API。申請通過(guò)后,Provider將其分配給滿(mǎn)足其要求的Consumer,以唯一標識該Consumer滿(mǎn)足Provider的要求。
對應上圖中的流程1和流程2。
Request Token、Request Secret:當用戶(hù)訪(fǎng)問(wèn)Consumer,希望獲得其特殊服務(wù)時(shí),該服務(wù)在整合了Provider中存儲的用戶(hù)自己的資源后由Consumer返回。此時(shí),Consumer向Provider請求獲取Requst Token,用于唯一標識Consumer和User之間的具體關(guān)聯(lián)。
對應上圖中的過(guò)程3、4、5。
要處理 6,消費者必須將用戶(hù)引導至提供者提供的 OAuth 身份驗證和授權頁(yè)面。事實(shí)上,瀏覽器被重定向到帶有請求令牌和請求秘密參數的 authenticationURL。URL 由提供商提供。
接下來(lái),User在流程7和流程8中授權Consumer(一般是通過(guò)輸入賬號和密碼登錄),Provider會(huì )被重定向到流程1Consumer提供的Callback_URL,URL參數附加OAuth Token和 OAuth 驗證程序。
流程9是Consumer使用之前從Provider獲取的Request Token再次向Provider請求獲取Access Token。
Access Token,Access Secret:如果流程10中的Provider返回一個(gè)未經(jīng)User授權的Access Token,用于唯一標識特定Consumer可以訪(fǎng)問(wèn)用戶(hù)在Provider中存儲的資源和信息。然后Consumer就可以開(kāi)始使用獲取到的Access Token和Access Secret來(lái)訪(fǎng)問(wèn)相應User存儲在Provider中的資源了。
在流程11中對用戶(hù)信息進(jìn)行整合操作后,即可將具體的服務(wù)結果返回給用戶(hù)。
通過(guò)以上對OAuth流程的了解,我們知道,實(shí)際上User并沒(méi)有向第三方Consumer透露登錄Provider所需的賬號和密碼。同時(shí),用戶(hù)可以使用消費者的特殊服務(wù)。多么巧妙而安全的操作過(guò)程!
此外,在上圖中,Consumer 向 Provider 發(fā)出了 3 個(gè)不同的請求。實(shí)際上,Provider 提供了 3 個(gè)不同功能的 URL 供 Consumer 訪(fǎng)問(wèn)。這3個(gè)網(wǎng)址在新浪微博開(kāi)放平臺的截圖如下:
新浪微博開(kāi)放平臺使用OAuth驗證并發(fā)布微博
使用新浪微博開(kāi)放平臺的API,首先需要獲取新浪分配的App key和App Secret。下面是我創(chuàng )建應用后新浪分配的App key和App Secret(這個(gè)要保密)。
然后下載微博SDK,我用的是Java的weibo4j。
將SDK包中的weibo.java類(lèi)的App Key和App Secret修改為剛剛獲取的App Key和App Secret,如下圖使用說(shuō)明所示:
完成這些之后,就可以根據提供的Demo開(kāi)始編寫(xiě)代碼了。如下:
WebOAuth.java用于初始化Weibo.java類(lèi)所需的App Key和App Secret,并提供getRequestToken()和gettAccessToken()方法獲取Request Token和Access Token。所需參數如代碼所示。此外,還提供了發(fā)布文本微博的update()方法。
package weibo4j.examples; import weibo4j.Status; import weibo4j.Weibo; import weibo4j.WeiboException; import weibo4j.http.AccessToken; import weibo4j.http.RequestToken; import java.io.UnsupportedEncodingException; // Web 方式認證 public class WebOAuth { private Weibo weibo; public WebOAuth(){ // 準備好Consumer Key、Consumer Secret // 對應于新浪微博應用就是申請到的 App key 和 Secret key System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY); System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET); weibo = new Weibo(); } // 根據傳入的 callback_url 獲取 request token public RequestToken getRequestToken(String backUrl) { try { // 指定 callback_url 并獲得 request token RequestToken requestToken = weibo.getOAuthRequestToken(backUrl); System.out.println("Request token: " + requestToken.getToken()); System.out.println("Request token secret: " + requestToken.getTokenSecret()); return requestToken; } catch (Exception e) { System.out.println("獲取Request token發(fā)生異常!"); e.printStackTrace(); return null; } } // 根據傳入的 request token 和 verifier 獲取 access token public AccessToken gettAccessToken(RequestToken requestToken, String verifier) { try { AccessToken accessToken = weibo.getOAuthAccessToken(requestToken .getToken(), requestToken.getTokenSecret(), verifier); System.out.println("Access token: " + accessToken.getToken()); System.out.println("Access token secret: " + accessToken.getTokenSecret()); return accessToken; } catch (Exception e) { System.out.println("獲取Access token發(fā)生異常!"); e.printStackTrace(); return null; } } // 根據傳入的 Access Token 和內容發(fā)表微博 public void update(AccessToken access, String content) { try { weibo.setToken(access.getToken(), access.getTokenSecret()); content = new String(content.getBytes("GBK"), "UTF-8"); Status status = weibo.updateStatus(content); System.out.println("成功發(fā)表微博:" + status.getText() + "."); } catch (UnsupportedEncodingException e) { System.out.println("微博內容轉編碼發(fā)生異常!"); e.printStackTrace(); } catch (WeiboException e) { System.out.println("發(fā)表微博發(fā)生異常!"); e.printStackTrace(); } } } request.jsp,用于提供 callback_url(這里我們自定義為下文中的callback.jsp),當獲取得到RequestToken之后,保存該RequestToken到Session中,并將頁(yè)面重定向到callback.jsp進(jìn)行驗證、授權。 請點(diǎn)擊進(jìn)行Web方式的OAuth認證!
callback.jsp,在上一步重定向之后,oauth_verifier 參數會(huì )附加到callback_url。這時(shí)候我們根據Session中存儲的RequestToken和獲取到的oauth_verifier參數來(lái)申請AccessToken。獲取到AccessToken后,我們將頁(yè)面重定向到writeWeibo.html頁(yè)面,用于寫(xiě)微博。
writeWeibo.html,很簡(jiǎn)單的HTML文件。 發(fā)布sina微博 請在這里寫(xiě)上140字符以?xún)鹊奈谋荆?lt;/br>測試新浪微博!</br></br> updateWeibo.jsp,用于發(fā)表文本微博,即調用WebOAuth.java 中的update方法。
在運行之前,我們要準備好Tomcat,把上面的源文件放到正確的目錄下。另外,SDK包中收錄的commons-httpclient-3.1.jar包也要添加到\WEB-INF\lib目錄下,以及weibo4j.jar(里面是具體的新浪微博開(kāi)放平臺中的Java實(shí)現)。
運行Tomcat,在瀏覽器中訪(fǎng)問(wèn)request.jsp頁(yè)面,如下圖:
點(diǎn)擊鏈接,如下圖(注意地址欄的變化):
地址欄的網(wǎng)址如下:
://localhost:8080/sinaweibo/callback.jsp
填寫(xiě)具體有效的新浪微博賬號、密碼并授權。以下是我用來(lái)測試授權的微博賬號的填寫(xiě)結果:
地址欄的網(wǎng)址如下:
:8080/sinaweibo/writeWeibo.html
點(diǎn)擊“發(fā)布”,如下圖:
登錄微博查看,如下圖:
查看賬戶(hù)授權的應用列表:
到目前為止,關(guān)于 OAuth
使用新浪微博開(kāi)放平臺發(fā)布微博的方式大概就是這個(gè)過(guò)程。
概括:
1、 其實(shí)還有很多細節沒(méi)說(shuō)到。我試了很多次才發(fā)現問(wèn)題,理解問(wèn)題,然后解決問(wèn)題。
2、 如果我們登錄新浪微博的賬號信息cookie已經(jīng)保存在瀏覽器中,那么授權時(shí)就不需要輸入賬號信息了,當然不用當前賬號也可以修改用于授權;
3、 控制臺中也有一些輸入的信息,比如Token、URL、服務(wù)器返回信息等,截圖中沒(méi)有顯示。
以上就是使用Java驗證OAuth協(xié)議發(fā)送微博的教程的詳細內容。更多詳情請關(guān)注其他相關(guān)html中文網(wǎng)站文章! 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(我要開(kāi)發(fā)一個(gè)基于sina微博開(kāi)放平臺的應用(App)(組圖))
本文文章主要介紹使用Java驗證通過(guò)OAuth協(xié)議發(fā)送微博的教程。它使用新浪微博為Java開(kāi)放的API weibo4j。有需要的朋友可以參考
新浪微博開(kāi)放平臺雖然提供了各種語(yǔ)言的開(kāi)發(fā)SDK下載,但也有基本接口調用的demo和接口說(shuō)明文檔。但是經(jīng)過(guò)這幾天的耐心嘗試,感覺(jué)新浪微博開(kāi)放平臺上的入門(mén)指南與下載的Java開(kāi)發(fā)包weibo4j包中的demo使用注釋有些不一致。再加上自我理解能力有限,導致了很多困惑。幸運的是,我并沒(méi)有放棄嘗試去理解它。廢話(huà)少說(shuō),以下是我的學(xué)習過(guò)程。
如果你想通過(guò)調用新浪微博開(kāi)放平臺API開(kāi)發(fā)自己的微博應用,首先要有一個(gè)新浪微博賬號和一個(gè)CSDN賬號,因為我們需要同時(shí)用這兩個(gè)賬號創(chuàng )建一個(gè)微博應用獲取App key和Secret key。App key和Secret key有什么用?
其實(shí)我只是看了新浪微博開(kāi)放平臺上的一系列解釋?zhuān)⒉皇呛芰私釧pp key和Secret key的使用。因為更重要的是了解OAuth認證授權的整個(gè)過(guò)程,以及幾個(gè)Token和4個(gè)URL在整個(gè)OAuth認證授權過(guò)程中的作用。
當我第一次遇到完全沒(méi)有概念的 OAuth 時(shí),我認為它是不可能學(xué)習的。幸好找到了下面的文章,對理解OAuth很有幫助。鏈接如下:
OAuth 有 3 個(gè)參與者,分別是 User、Service Provider 和 Consumer。假設我想開(kāi)發(fā)一個(gè)基于新浪微博開(kāi)放平臺的應用(App),供其他新浪微博用戶(hù)使用。它們的對應關(guān)系如下:
實(shí)際上,我們的App相當于User和Provider(新浪微博平臺)的第三方應用。作為第三方App,如果要訪(fǎng)問(wèn)用戶(hù)在新浪微博平臺上保存的資源,必須經(jīng)過(guò)一系列的認證和授權才能工作。
下面是根據我對整個(gè)OAuth認證和授權流程的理解繪制的圖(可以跳過(guò),對以下一些概念有一定了解后再回頭看這個(gè)流程圖):

結合上面的流程圖,下面是我對這些術(shù)語(yǔ)的理解以及對各個(gè)過(guò)程的描述:
消費者秘鑰和消費者秘鑰:在新浪微博開(kāi)放平臺上分別稱(chēng)為App秘鑰和秘鑰。消費者向提供者申請,希望能夠調用其開(kāi)放的API。申請通過(guò)后,Provider將其分配給滿(mǎn)足其要求的Consumer,以唯一標識該Consumer滿(mǎn)足Provider的要求。
對應上圖中的流程1和流程2。
Request Token、Request Secret:當用戶(hù)訪(fǎng)問(wèn)Consumer,希望獲得其特殊服務(wù)時(shí),該服務(wù)在整合了Provider中存儲的用戶(hù)自己的資源后由Consumer返回。此時(shí),Consumer向Provider請求獲取Requst Token,用于唯一標識Consumer和User之間的具體關(guān)聯(lián)。
對應上圖中的過(guò)程3、4、5。
要處理 6,消費者必須將用戶(hù)引導至提供者提供的 OAuth 身份驗證和授權頁(yè)面。事實(shí)上,瀏覽器被重定向到帶有請求令牌和請求秘密參數的 authenticationURL。URL 由提供商提供。
接下來(lái),User在流程7和流程8中授權Consumer(一般是通過(guò)輸入賬號和密碼登錄),Provider會(huì )被重定向到流程1Consumer提供的Callback_URL,URL參數附加OAuth Token和 OAuth 驗證程序。
流程9是Consumer使用之前從Provider獲取的Request Token再次向Provider請求獲取Access Token。
Access Token,Access Secret:如果流程10中的Provider返回一個(gè)未經(jīng)User授權的Access Token,用于唯一標識特定Consumer可以訪(fǎng)問(wèn)用戶(hù)在Provider中存儲的資源和信息。然后Consumer就可以開(kāi)始使用獲取到的Access Token和Access Secret來(lái)訪(fǎng)問(wèn)相應User存儲在Provider中的資源了。
在流程11中對用戶(hù)信息進(jìn)行整合操作后,即可將具體的服務(wù)結果返回給用戶(hù)。
通過(guò)以上對OAuth流程的了解,我們知道,實(shí)際上User并沒(méi)有向第三方Consumer透露登錄Provider所需的賬號和密碼。同時(shí),用戶(hù)可以使用消費者的特殊服務(wù)。多么巧妙而安全的操作過(guò)程!
此外,在上圖中,Consumer 向 Provider 發(fā)出了 3 個(gè)不同的請求。實(shí)際上,Provider 提供了 3 個(gè)不同功能的 URL 供 Consumer 訪(fǎng)問(wèn)。這3個(gè)網(wǎng)址在新浪微博開(kāi)放平臺的截圖如下:

新浪微博開(kāi)放平臺使用OAuth驗證并發(fā)布微博
使用新浪微博開(kāi)放平臺的API,首先需要獲取新浪分配的App key和App Secret。下面是我創(chuàng )建應用后新浪分配的App key和App Secret(這個(gè)要保密)。

然后下載微博SDK,我用的是Java的weibo4j。
將SDK包中的weibo.java類(lèi)的App Key和App Secret修改為剛剛獲取的App Key和App Secret,如下圖使用說(shuō)明所示:

完成這些之后,就可以根據提供的Demo開(kāi)始編寫(xiě)代碼了。如下:
WebOAuth.java用于初始化Weibo.java類(lèi)所需的App Key和App Secret,并提供getRequestToken()和gettAccessToken()方法獲取Request Token和Access Token。所需參數如代碼所示。此外,還提供了發(fā)布文本微博的update()方法。
package weibo4j.examples; import weibo4j.Status; import weibo4j.Weibo; import weibo4j.WeiboException; import weibo4j.http.AccessToken; import weibo4j.http.RequestToken; import java.io.UnsupportedEncodingException; // Web 方式認證 public class WebOAuth { private Weibo weibo; public WebOAuth(){ // 準備好Consumer Key、Consumer Secret // 對應于新浪微博應用就是申請到的 App key 和 Secret key System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY); System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET); weibo = new Weibo(); } // 根據傳入的 callback_url 獲取 request token public RequestToken getRequestToken(String backUrl) { try { // 指定 callback_url 并獲得 request token RequestToken requestToken = weibo.getOAuthRequestToken(backUrl); System.out.println("Request token: " + requestToken.getToken()); System.out.println("Request token secret: " + requestToken.getTokenSecret()); return requestToken; } catch (Exception e) { System.out.println("獲取Request token發(fā)生異常!"); e.printStackTrace(); return null; } } // 根據傳入的 request token 和 verifier 獲取 access token public AccessToken gettAccessToken(RequestToken requestToken, String verifier) { try { AccessToken accessToken = weibo.getOAuthAccessToken(requestToken .getToken(), requestToken.getTokenSecret(), verifier); System.out.println("Access token: " + accessToken.getToken()); System.out.println("Access token secret: " + accessToken.getTokenSecret()); return accessToken; } catch (Exception e) { System.out.println("獲取Access token發(fā)生異常!"); e.printStackTrace(); return null; } } // 根據傳入的 Access Token 和內容發(fā)表微博 public void update(AccessToken access, String content) { try { weibo.setToken(access.getToken(), access.getTokenSecret()); content = new String(content.getBytes("GBK"), "UTF-8"); Status status = weibo.updateStatus(content); System.out.println("成功發(fā)表微博:" + status.getText() + "."); } catch (UnsupportedEncodingException e) { System.out.println("微博內容轉編碼發(fā)生異常!"); e.printStackTrace(); } catch (WeiboException e) { System.out.println("發(fā)表微博發(fā)生異常!"); e.printStackTrace(); } } } request.jsp,用于提供 callback_url(這里我們自定義為下文中的callback.jsp),當獲取得到RequestToken之后,保存該RequestToken到Session中,并將頁(yè)面重定向到callback.jsp進(jìn)行驗證、授權。 請點(diǎn)擊進(jìn)行Web方式的OAuth認證!
callback.jsp,在上一步重定向之后,oauth_verifier 參數會(huì )附加到callback_url。這時(shí)候我們根據Session中存儲的RequestToken和獲取到的oauth_verifier參數來(lái)申請AccessToken。獲取到AccessToken后,我們將頁(yè)面重定向到writeWeibo.html頁(yè)面,用于寫(xiě)微博。
writeWeibo.html,很簡(jiǎn)單的HTML文件。 發(fā)布sina微博 請在這里寫(xiě)上140字符以?xún)鹊奈谋荆?lt;/br>測試新浪微博!</br></br> updateWeibo.jsp,用于發(fā)表文本微博,即調用WebOAuth.java 中的update方法。
在運行之前,我們要準備好Tomcat,把上面的源文件放到正確的目錄下。另外,SDK包中收錄的commons-httpclient-3.1.jar包也要添加到\WEB-INF\lib目錄下,以及weibo4j.jar(里面是具體的新浪微博開(kāi)放平臺中的Java實(shí)現)。
運行Tomcat,在瀏覽器中訪(fǎng)問(wèn)request.jsp頁(yè)面,如下圖:

點(diǎn)擊鏈接,如下圖(注意地址欄的變化):

地址欄的網(wǎng)址如下:
://localhost:8080/sinaweibo/callback.jsp
填寫(xiě)具體有效的新浪微博賬號、密碼并授權。以下是我用來(lái)測試授權的微博賬號的填寫(xiě)結果:

地址欄的網(wǎng)址如下:
:8080/sinaweibo/writeWeibo.html
點(diǎn)擊“發(fā)布”,如下圖:

登錄微博查看,如下圖:

查看賬戶(hù)授權的應用列表:
到目前為止,關(guān)于 OAuth

使用新浪微博開(kāi)放平臺發(fā)布微博的方式大概就是這個(gè)過(guò)程。
概括:
1、 其實(shí)還有很多細節沒(méi)說(shuō)到。我試了很多次才發(fā)現問(wèn)題,理解問(wèn)題,然后解決問(wèn)題。
2、 如果我們登錄新浪微博的賬號信息cookie已經(jīng)保存在瀏覽器中,那么授權時(shí)就不需要輸入賬號信息了,當然不用當前賬號也可以修改用于授權;
3、 控制臺中也有一些輸入的信息,比如Token、URL、服務(wù)器返回信息等,截圖中沒(méi)有顯示。
以上就是使用Java驗證OAuth協(xié)議發(fā)送微博的教程的詳細內容。更多詳情請關(guān)注其他相關(guān)html中文網(wǎng)站文章!
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(騰訊微博開(kāi)放平臺開(kāi)發(fā)者服務(wù)協(xié)議如何開(kāi)發(fā)微博應用?(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 74 次瀏覽 ? 2021-10-13 02:18
騰訊微博開(kāi)放平臺API現已開(kāi)放。使用騰訊微博開(kāi)放平臺提供的API創(chuàng )建自己的應用程序,您必須先填寫(xiě)個(gè)人信息,聯(lián)系郵箱驗證,取得開(kāi)發(fā)者資質(zhì),才能創(chuàng )建自己的應用程序。騰訊微博開(kāi)放平臺是基于騰訊微博系統面向開(kāi)發(fā)者和用戶(hù)開(kāi)放的數據共享和傳播平臺。開(kāi)發(fā)者和用戶(hù)登錄平臺后,可以使用平臺提供的開(kāi)放API接口創(chuàng )建應用程序,從微博系統獲取信息,或將新信息傳播到整個(gè)微博系統??梢蕴砑痈鞣N API 接口和應用程序。發(fā)揮你的智慧將創(chuàng )造無(wú)窮無(wú)盡的應用和樂(lè )趣。
平臺說(shuō)明:
騰訊微博開(kāi)放平臺是基于騰訊微博系統面向開(kāi)發(fā)者和用戶(hù)開(kāi)放的數據共享和傳播平臺。開(kāi)發(fā)者和用戶(hù)登錄平臺后,可以使用平臺提供的開(kāi)放API接口創(chuàng )建應用程序,從微博系統獲取信息,或將新信息傳播到整個(gè)微博系統??梢蕴砑痈鞣N API 接口和應用程序。發(fā)揮你的智慧,創(chuàng )造無(wú)窮的應用和樂(lè )趣!
平臺介紹——微博開(kāi)放平臺可以獲得的資源和優(yōu)勢
應用程序開(kāi)發(fā)說(shuō)明-講解如何成為開(kāi)發(fā)人員并創(chuàng )建應用程序
申請審核流程——審核申請源字段的好處,以及如何審核
開(kāi)發(fā)者協(xié)議——在此查看騰訊微博開(kāi)放平臺開(kāi)發(fā)者服務(wù)協(xié)議
如何開(kāi)發(fā)微博應用?(立即成為開(kāi)發(fā)人員)
您只需要按照以下步驟操作:
第一步:填寫(xiě)您的開(kāi)發(fā)者信息;
第二步:驗證聯(lián)系郵箱;(電子郵件將作為我們與您聯(lián)系的重要方式,請提供常用的電子郵件地址)
第三步:填寫(xiě)要創(chuàng )建的應用信息。
您可以立即獲取微博App Key和App Secret,調用微博API,開(kāi)始應用開(kāi)發(fā)。查看詳細說(shuō)明
----
代表中國最先進(jìn)互聯(lián)網(wǎng)技術(shù)的騰訊終于邁出了開(kāi)放的第一步:-) 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(騰訊微博開(kāi)放平臺開(kāi)發(fā)者服務(wù)協(xié)議如何開(kāi)發(fā)微博應用?(圖))
騰訊微博開(kāi)放平臺API現已開(kāi)放。使用騰訊微博開(kāi)放平臺提供的API創(chuàng )建自己的應用程序,您必須先填寫(xiě)個(gè)人信息,聯(lián)系郵箱驗證,取得開(kāi)發(fā)者資質(zhì),才能創(chuàng )建自己的應用程序。騰訊微博開(kāi)放平臺是基于騰訊微博系統面向開(kāi)發(fā)者和用戶(hù)開(kāi)放的數據共享和傳播平臺。開(kāi)發(fā)者和用戶(hù)登錄平臺后,可以使用平臺提供的開(kāi)放API接口創(chuàng )建應用程序,從微博系統獲取信息,或將新信息傳播到整個(gè)微博系統??梢蕴砑痈鞣N API 接口和應用程序。發(fā)揮你的智慧將創(chuàng )造無(wú)窮無(wú)盡的應用和樂(lè )趣。
平臺說(shuō)明:
騰訊微博開(kāi)放平臺是基于騰訊微博系統面向開(kāi)發(fā)者和用戶(hù)開(kāi)放的數據共享和傳播平臺。開(kāi)發(fā)者和用戶(hù)登錄平臺后,可以使用平臺提供的開(kāi)放API接口創(chuàng )建應用程序,從微博系統獲取信息,或將新信息傳播到整個(gè)微博系統??梢蕴砑痈鞣N API 接口和應用程序。發(fā)揮你的智慧,創(chuàng )造無(wú)窮的應用和樂(lè )趣!
平臺介紹——微博開(kāi)放平臺可以獲得的資源和優(yōu)勢
應用程序開(kāi)發(fā)說(shuō)明-講解如何成為開(kāi)發(fā)人員并創(chuàng )建應用程序
申請審核流程——審核申請源字段的好處,以及如何審核
開(kāi)發(fā)者協(xié)議——在此查看騰訊微博開(kāi)放平臺開(kāi)發(fā)者服務(wù)協(xié)議
如何開(kāi)發(fā)微博應用?(立即成為開(kāi)發(fā)人員)
您只需要按照以下步驟操作:
第一步:填寫(xiě)您的開(kāi)發(fā)者信息;
第二步:驗證聯(lián)系郵箱;(電子郵件將作為我們與您聯(lián)系的重要方式,請提供常用的電子郵件地址)
第三步:填寫(xiě)要創(chuàng )建的應用信息。
您可以立即獲取微博App Key和App Secret,調用微博API,開(kāi)始應用開(kāi)發(fā)。查看詳細說(shuō)明
----
代表中國最先進(jìn)互聯(lián)網(wǎng)技術(shù)的騰訊終于邁出了開(kāi)放的第一步:-)
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(有些特殊的emoji表情符會(huì )被「同步圈」識別錯誤!)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2021-10-13 02:17
在微信公眾號和朋友圈瘋狂擠壓個(gè)人時(shí)間的當下,很多人的微博賬號逐漸被拋棄,而這個(gè)工具可以幫你自動(dòng)同步任何朋友圈圖文內容到你的微博。
這個(gè)可以為你省去很多麻煩的小工具叫做“同步圈”。顧名思義,就是把你的“朋友圈”“同步”到微博上。
為了一勞永逸地享受自動(dòng)同步的便利,您需要提前在PC瀏覽器中使用您的個(gè)人微博賬號登錄同步推文。網(wǎng)址在這里。獲得登錄授權后,網(wǎng)頁(yè)上會(huì )顯示二維碼。用微信掃一掃后,添加一個(gè)名為“同步圈”的個(gè)人微信賬號,很快就會(huì )通過(guò)驗證。
接下來(lái),您需要將二維碼下方的四位驗證碼發(fā)送到“同步圈”賬號,系統會(huì )提示您綁定成功!
經(jīng)測試,“同步圈”目前支持純文本、文本+表情、文本+圖片的自動(dòng)同步。您在朋友圈發(fā)布的小視頻和地理位置無(wú)法同步到您的個(gè)人微博。經(jīng)過(guò)實(shí)測,我也發(fā)現一些特殊的表情符號會(huì )被“同步圈”誤識別,可能會(huì )造成一些歧義或誤解。這可能是微信朋友圈和微博支持的表情符號不一致造成的。
從原理上看,“同步圈”調用了微信朋友圈側的一些內容識別接口,可以自動(dòng)抓取綁定用戶(hù)的朋友圈內容,然后利用微博開(kāi)放平臺的API接口發(fā)送同樣的內容內容出去。抽象地說(shuō),“同步圈”與著(zhù)名的自動(dòng)化服務(wù)IFTTT非常相似。只是它在微信封閉的城墻上開(kāi)設了一個(gè)單向信息站,幫助用戶(hù)將內容輸出到更廣闊的公共網(wǎng)絡(luò )空間。
遺憾的是,根據pc6編輯對騰訊和微信團隊的了解,這個(gè)同步圈的“小聰明”可能很快就會(huì )失敗。
安卓版
新浪微博類(lèi)型:社交聊天 大?。?9.9M 版本:v5.6.0 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(有些特殊的emoji表情符會(huì )被「同步圈」識別錯誤!)
在微信公眾號和朋友圈瘋狂擠壓個(gè)人時(shí)間的當下,很多人的微博賬號逐漸被拋棄,而這個(gè)工具可以幫你自動(dòng)同步任何朋友圈圖文內容到你的微博。
這個(gè)可以為你省去很多麻煩的小工具叫做“同步圈”。顧名思義,就是把你的“朋友圈”“同步”到微博上。

為了一勞永逸地享受自動(dòng)同步的便利,您需要提前在PC瀏覽器中使用您的個(gè)人微博賬號登錄同步推文。網(wǎng)址在這里。獲得登錄授權后,網(wǎng)頁(yè)上會(huì )顯示二維碼。用微信掃一掃后,添加一個(gè)名為“同步圈”的個(gè)人微信賬號,很快就會(huì )通過(guò)驗證。
接下來(lái),您需要將二維碼下方的四位驗證碼發(fā)送到“同步圈”賬號,系統會(huì )提示您綁定成功!
經(jīng)測試,“同步圈”目前支持純文本、文本+表情、文本+圖片的自動(dòng)同步。您在朋友圈發(fā)布的小視頻和地理位置無(wú)法同步到您的個(gè)人微博。經(jīng)過(guò)實(shí)測,我也發(fā)現一些特殊的表情符號會(huì )被“同步圈”誤識別,可能會(huì )造成一些歧義或誤解。這可能是微信朋友圈和微博支持的表情符號不一致造成的。
從原理上看,“同步圈”調用了微信朋友圈側的一些內容識別接口,可以自動(dòng)抓取綁定用戶(hù)的朋友圈內容,然后利用微博開(kāi)放平臺的API接口發(fā)送同樣的內容內容出去。抽象地說(shuō),“同步圈”與著(zhù)名的自動(dòng)化服務(wù)IFTTT非常相似。只是它在微信封閉的城墻上開(kāi)設了一個(gè)單向信息站,幫助用戶(hù)將內容輸出到更廣闊的公共網(wǎng)絡(luò )空間。
遺憾的是,根據pc6編輯對騰訊和微信團隊的了解,這個(gè)同步圈的“小聰明”可能很快就會(huì )失敗。
安卓版

新浪微博類(lèi)型:社交聊天 大?。?9.9M 版本:v5.6.0
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(鄭敏先任職于)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 69 次瀏覽 ? 2021-10-12 17:06
作者簡(jiǎn)介:鄭敏賢,曾任職,售前工程師。從事SDN、白盒交換機等開(kāi)放網(wǎng)絡(luò )產(chǎn)品的推廣。
成立于 2005 年。該公司提供了一個(gè)開(kāi)源網(wǎng)絡(luò )操作系統,也稱(chēng)為 Vyatta,可以在商用硬件上運行。Vyatta 的名字取自梵文中的“open”,發(fā)音為“vee-at-ah”。2006年,推出Vyatta商業(yè)訂閱版,每年定價(jià)500美元。
隨著(zhù)云計算的發(fā)展,Vyatta得到了眾多公有云廠(chǎng)商的支持。例如,AWS Marketplace 中的第一個(gè)虛擬路由器應用程序是 Vyatta:
2012年11月博科收購Vyatta后,開(kāi)源社區版被取消,軟件更名為Vyatta vRouter。但 Vyatta 的開(kāi)源之路并沒(méi)有結束。為了響應博科停止 Vyatta 社區版的決定,獨立開(kāi)發(fā)人員從 Vyatta Core 6.6 R1 版本(VyOS 開(kāi)源軟件項目)中分出一個(gè)分支。
從 Vyatta 到 dNOS
Vyatta 于 2017 年 7 月被 AT&T 收購。 Vyatta NOS 構成了 AT&T 開(kāi)源 dNOS(分解網(wǎng)絡(luò )操作系統)平臺的基礎。
dNOS 由硬件和軟件組件組成:
AT&T 在這些場(chǎng)景中使用 dNOS 軟件:
dNOS功能及組件圖
簡(jiǎn)單分析一下上圖中的三個(gè)層次:
1、應用程序是路由器上控制平面或管理平面組件的任何網(wǎng)絡(luò )功能。
2、共享基礎設施和數據。NOS 必須能夠使用通用方法和協(xié)議在來(lái)自不同供應商的應用程序之間共享數據。dNOS 的一個(gè)關(guān)鍵目標是創(chuàng )建一個(gè)促進(jìn)應用程序之間共享的開(kāi)放環(huán)境。為此,dNOS 包括通用基礎設施組件和共享數據結構。
基本網(wǎng)絡(luò )狀態(tài)信息存儲在一組通用共享數據結構中。這些數據結構包括有關(guān)接口狀態(tài)、鄰居解析表和轉發(fā)信息庫 (FIB) 狀態(tài)的信息。應用程序使用通用方法更新相關(guān)的基本網(wǎng)絡(luò )狀態(tài)共享數據。
所有共享基礎設施數據都由使用合適的標準數據結構和/或數據建模語(yǔ)言(例如,YANG)表達的標準化數據模型定義。數據共享基礎設施和基礎網(wǎng)絡(luò )狀態(tài)共享數據結構實(shí)現了不同協(xié)議之間公共數據的共享(例如,經(jīng)典IGP可訪(fǎng)問(wèn)的鏈路狀態(tài)數據,如用于SDN控制應用的OSPF和ISIS和BGP-LS),以及優(yōu)雅的協(xié)議選擇的演變(例如,使用 gRPC 而不是 SNMP 來(lái)采集 OAM 數據)。
用戶(hù)、業(yè)務(wù)流程和數據導出接口提供了一個(gè)通用的基礎設施,用于將應用程序和系統基礎設施連接到外部系統以進(jìn)行管理和分析。ONAP管控系統北向接口包括NetConf/YANG和gRPC,支持流式和(傳統)輪詢(xún)機制進(jìn)行遙測數據采集。
3、dNOS 包括一組支持多個(gè)不同轉發(fā)層的組件。轉發(fā)抽象層 (FAL) 負責從共享基礎設施和數據組件獲取高級網(wǎng)絡(luò )狀態(tài)輸入,并將它們轉換為供應商特定的 API,用于各種軟件和硬件轉發(fā)選項:
FAL 的目標是讓 ASIC 供應商多樣化,多個(gè) ASIC 共享一個(gè)與目標無(wú)關(guān)的公共抽象層。FAL 的長(cháng)期目標是收錄支持完全可編程硬件管道的抽象。這種抽象將基于正式的網(wǎng)絡(luò )編程語(yǔ)言,例如 P4 或其他類(lèi)似的行業(yè)認可的標準化語(yǔ)言。
從 dNOS 到 DANOS
AT&T 于 2018 年初向 Linux 基金會(huì )貢獻了 dNOS 作為種子代碼,Linux 基金會(huì )據此建立了 DANOS 項目。DANOS(Dis-Aggregated Network Operating System)將提供一個(gè)開(kāi)放的 NOS 框架,使用現有的開(kāi)源資源和硬件平臺,如白盒交換機、白盒路由器和 uCPE。Vyatta第四代架構引入了商用芯片+軟件轉發(fā)的混合轉發(fā)模式。采用Vyatta第四代架構的DANOS預計將于2019年第一季度正式發(fā)布。
DANOS專(zhuān)注于硬件/軟件分解,超越云數據中心網(wǎng)絡(luò )功能,創(chuàng )建和培育路由軟件組件供應商生態(tài)系統,提供創(chuàng )新的網(wǎng)絡(luò )解決方案,滿(mǎn)足城域網(wǎng)/廣域網(wǎng)(包括蜂窩網(wǎng)絡(luò ))規?;?、快速發(fā)展的功能需求。站點(diǎn)路由器、城域以太網(wǎng)服務(wù)和 RAN 回程路由器/交換機、互聯(lián)網(wǎng)和 VPN 服務(wù)邊緣路由器、運營(yíng)商間 POP 互連結構、骨干核心路由器等)。DANOS 目前計劃支持這五個(gè)操作系統:dNOS、FRR、SONiC、OpenSwitch 和 Stratum。
DANOS的三大特點(diǎn):
DANOS/dNOS詳細架構圖(顏色對應之前的“dNOS功能和組件圖”)
對比上圖,我粗略介紹一下DANOS的控制和管理平面、基礎操作系統和數據平面:
控制和管理平面:基本操作系統:數據平面:參考:
1、%20whitepaper.pdf
2、
3、 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(鄭敏先任職于)
作者簡(jiǎn)介:鄭敏賢,曾任職,售前工程師。從事SDN、白盒交換機等開(kāi)放網(wǎng)絡(luò )產(chǎn)品的推廣。

成立于 2005 年。該公司提供了一個(gè)開(kāi)源網(wǎng)絡(luò )操作系統,也稱(chēng)為 Vyatta,可以在商用硬件上運行。Vyatta 的名字取自梵文中的“open”,發(fā)音為“vee-at-ah”。2006年,推出Vyatta商業(yè)訂閱版,每年定價(jià)500美元。

隨著(zhù)云計算的發(fā)展,Vyatta得到了眾多公有云廠(chǎng)商的支持。例如,AWS Marketplace 中的第一個(gè)虛擬路由器應用程序是 Vyatta:

2012年11月博科收購Vyatta后,開(kāi)源社區版被取消,軟件更名為Vyatta vRouter。但 Vyatta 的開(kāi)源之路并沒(méi)有結束。為了響應博科停止 Vyatta 社區版的決定,獨立開(kāi)發(fā)人員從 Vyatta Core 6.6 R1 版本(VyOS 開(kāi)源軟件項目)中分出一個(gè)分支。
從 Vyatta 到 dNOS
Vyatta 于 2017 年 7 月被 AT&T 收購。 Vyatta NOS 構成了 AT&T 開(kāi)源 dNOS(分解網(wǎng)絡(luò )操作系統)平臺的基礎。
dNOS 由硬件和軟件組件組成:
AT&T 在這些場(chǎng)景中使用 dNOS 軟件:

dNOS功能及組件圖
簡(jiǎn)單分析一下上圖中的三個(gè)層次:
1、應用程序是路由器上控制平面或管理平面組件的任何網(wǎng)絡(luò )功能。
2、共享基礎設施和數據。NOS 必須能夠使用通用方法和協(xié)議在來(lái)自不同供應商的應用程序之間共享數據。dNOS 的一個(gè)關(guān)鍵目標是創(chuàng )建一個(gè)促進(jìn)應用程序之間共享的開(kāi)放環(huán)境。為此,dNOS 包括通用基礎設施組件和共享數據結構。
基本網(wǎng)絡(luò )狀態(tài)信息存儲在一組通用共享數據結構中。這些數據結構包括有關(guān)接口狀態(tài)、鄰居解析表和轉發(fā)信息庫 (FIB) 狀態(tài)的信息。應用程序使用通用方法更新相關(guān)的基本網(wǎng)絡(luò )狀態(tài)共享數據。
所有共享基礎設施數據都由使用合適的標準數據結構和/或數據建模語(yǔ)言(例如,YANG)表達的標準化數據模型定義。數據共享基礎設施和基礎網(wǎng)絡(luò )狀態(tài)共享數據結構實(shí)現了不同協(xié)議之間公共數據的共享(例如,經(jīng)典IGP可訪(fǎng)問(wèn)的鏈路狀態(tài)數據,如用于SDN控制應用的OSPF和ISIS和BGP-LS),以及優(yōu)雅的協(xié)議選擇的演變(例如,使用 gRPC 而不是 SNMP 來(lái)采集 OAM 數據)。
用戶(hù)、業(yè)務(wù)流程和數據導出接口提供了一個(gè)通用的基礎設施,用于將應用程序和系統基礎設施連接到外部系統以進(jìn)行管理和分析。ONAP管控系統北向接口包括NetConf/YANG和gRPC,支持流式和(傳統)輪詢(xún)機制進(jìn)行遙測數據采集。
3、dNOS 包括一組支持多個(gè)不同轉發(fā)層的組件。轉發(fā)抽象層 (FAL) 負責從共享基礎設施和數據組件獲取高級網(wǎng)絡(luò )狀態(tài)輸入,并將它們轉換為供應商特定的 API,用于各種軟件和硬件轉發(fā)選項:
FAL 的目標是讓 ASIC 供應商多樣化,多個(gè) ASIC 共享一個(gè)與目標無(wú)關(guān)的公共抽象層。FAL 的長(cháng)期目標是收錄支持完全可編程硬件管道的抽象。這種抽象將基于正式的網(wǎng)絡(luò )編程語(yǔ)言,例如 P4 或其他類(lèi)似的行業(yè)認可的標準化語(yǔ)言。
從 dNOS 到 DANOS
AT&T 于 2018 年初向 Linux 基金會(huì )貢獻了 dNOS 作為種子代碼,Linux 基金會(huì )據此建立了 DANOS 項目。DANOS(Dis-Aggregated Network Operating System)將提供一個(gè)開(kāi)放的 NOS 框架,使用現有的開(kāi)源資源和硬件平臺,如白盒交換機、白盒路由器和 uCPE。Vyatta第四代架構引入了商用芯片+軟件轉發(fā)的混合轉發(fā)模式。采用Vyatta第四代架構的DANOS預計將于2019年第一季度正式發(fā)布。

DANOS專(zhuān)注于硬件/軟件分解,超越云數據中心網(wǎng)絡(luò )功能,創(chuàng )建和培育路由軟件組件供應商生態(tài)系統,提供創(chuàng )新的網(wǎng)絡(luò )解決方案,滿(mǎn)足城域網(wǎng)/廣域網(wǎng)(包括蜂窩網(wǎng)絡(luò ))規?;?、快速發(fā)展的功能需求。站點(diǎn)路由器、城域以太網(wǎng)服務(wù)和 RAN 回程路由器/交換機、互聯(lián)網(wǎng)和 VPN 服務(wù)邊緣路由器、運營(yíng)商間 POP 互連結構、骨干核心路由器等)。DANOS 目前計劃支持這五個(gè)操作系統:dNOS、FRR、SONiC、OpenSwitch 和 Stratum。
DANOS的三大特點(diǎn):

DANOS/dNOS詳細架構圖(顏色對應之前的“dNOS功能和組件圖”)
對比上圖,我粗略介紹一下DANOS的控制和管理平面、基礎操作系統和數據平面:
控制和管理平面:基本操作系統:數據平面:參考:
1、%20whitepaper.pdf
2、
3、
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(基于python的開(kāi)放平臺簽名、加密解密以及授權認證測試體系)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 75 次瀏覽 ? 2021-10-10 21:05
目前,大型頂級公司擁有非常成熟的開(kāi)放平臺服務(wù),如微信開(kāi)放平臺、新浪微博開(kāi)放平臺、支付寶開(kāi)放平臺等。開(kāi)放平臺的發(fā)展為第三方個(gè)人或公司提供了巨大的機會(huì )。開(kāi)發(fā)者想要接入各大開(kāi)放平臺,必須遵守開(kāi)放平臺的安全機制,實(shí)現業(yè)務(wù)邏輯的前提。一是實(shí)現簽名驗證、加解密、授權鑒權機制。
本文介紹了基于python的開(kāi)放平臺簽名認證測試系統,可用于第三方應用的沙箱測試,也可應用于服務(wù)商相關(guān)系統的綜合測試。
一、簡(jiǎn)介
開(kāi)放平臺是指大型企業(yè)以業(yè)務(wù)+場(chǎng)景+解決方案+技術(shù)的優(yōu)勢,將自身的數據能力、計算能力、用戶(hù)系統、產(chǎn)品能力等資源打包,通過(guò)openAPI、openSDK等方式向第三方個(gè)人或個(gè)人開(kāi)放,和 openH5。企業(yè)使用,實(shí)現第三方與服務(wù)商企業(yè)自身的互利共贏(yíng)。
目前各大廠(chǎng)商的開(kāi)放平臺都比較成熟,如微信開(kāi)放平臺、新浪微博開(kāi)放平臺、支付寶開(kāi)放平臺等。與此同時(shí),各大商業(yè)銀行也在大力發(fā)展自身的開(kāi)放銀行服務(wù)。作為第三方開(kāi)發(fā)者,一般來(lái)說(shuō),接入開(kāi)放平臺有一個(gè)相對統一的流程。下圖為微信開(kāi)放平臺開(kāi)通流程。
圖1 微信開(kāi)放平臺接入流程
如圖1第三步所示,應用上線(xiàn)前,必須進(jìn)行必要的測試。業(yè)務(wù)邏輯測試的前提是測試簽名驗證、加解密、授權認證等安全認證機制。python社區非常成熟,廣泛應用于機器學(xué)習、數據分析、網(wǎng)絡(luò )爬蟲(chóng)、自動(dòng)化腳本等諸多領(lǐng)域。
在web開(kāi)發(fā)方面,目前有很多公司如Instagram、Quora、Lyft、Dropbox、知乎等后端使用python進(jìn)行開(kāi)發(fā)。本文介紹了基于python的簽名驗證、加解密、授權認證測試的實(shí)現。
二、簽名驗證
第三方個(gè)人或企業(yè)通過(guò)開(kāi)放平臺門(mén)戶(hù)網(wǎng)站提交申請成為開(kāi)發(fā)者。開(kāi)發(fā)者資質(zhì)認證通過(guò)后,開(kāi)發(fā)者通常會(huì )從服務(wù)商處獲得自己的appid、appsecret和證書(shū)。該證書(shū)收錄第一個(gè) 第三方開(kāi)發(fā)者的私鑰和服務(wù)提供者的公鑰。
服務(wù)提供商保留第三方開(kāi)發(fā)者的公鑰和自己的私鑰。開(kāi)發(fā)者使用自己的私鑰進(jìn)行簽名,并將消息發(fā)送到開(kāi)放平臺服務(wù)器。服務(wù)器驗證通過(guò)后,會(huì )使用自己的私鑰對返回給開(kāi)發(fā)者的消息進(jìn)行簽名,開(kāi)發(fā)者收到返回消息后,使用服務(wù)方提供的公鑰進(jìn)行驗證。通過(guò)這個(gè)過(guò)程,開(kāi)發(fā)者和服務(wù)端可以相互確認發(fā)送的消息沒(méi)有被中間人篡改。
本文的簽名驗證使用RSA算法進(jìn)行演示。使用Python的Crypto庫,安裝時(shí)需要使用pip或conda等其他包管理工具。
一般來(lái)說(shuō),開(kāi)發(fā)者需要對消息的每個(gè)字段進(jìn)行預處理。
1.去除請求字典中的所有空值或不必要的參數(如sign、sign_type等);
2. 對字典進(jìn)行排序(按照ASCII碼從小到大);
3. 按照“參數=參數值”的模式,將字典中的所有元素用“&”字符組合成一個(gè)字符串。
數據預處理功能如下圖所示:
圖2 數據預處理功能
當開(kāi)發(fā)者發(fā)送消息時(shí),會(huì )使用Hash函數從消息中生成摘要,然后用私人消息對摘要進(jìn)行加密。加密后的摘要用作消息的數字簽名,并與消息一起發(fā)送到服務(wù)器。下圖展示了RSA算法的簽名函數的實(shí)現:
圖3 數字簽名功能
首先使用hash_method函數選擇要使用的digest算法,可以根據實(shí)際情況重構函數。這里演示了 MD5 和 SHA256 算法的示例。簽名函數首先要讀取開(kāi)發(fā)者的私鑰,然后使用RSA算法完成簽名。
開(kāi)發(fā)者收到服務(wù)器返回的消息后,使用相同的Hash函數從接收到的原創(chuàng )消息中計算出消息的摘要,然后使用發(fā)送方的公鑰對消息所附的數字簽名進(jìn)行解密,如果兩個(gè)摘要是一致,開(kāi)發(fā)??者可以確認消息是服務(wù)器發(fā)送的,沒(méi)有被篡改。
圖4 簽名驗證功能
三、加解密
除了用于數字簽名之外,RAS 算法還可以用于消息的非對稱(chēng)加密。非對稱(chēng)加密比對稱(chēng)加密更安全,但由于算法強度比對稱(chēng)加密復雜,因此加解密速度比對稱(chēng)加密慢。對稱(chēng)加密算法的特點(diǎn)是計算量小、加密速度快、加密效率高。缺點(diǎn)是交易雙方使用相同的密鑰,無(wú)法保證安全。常見(jiàn)的對稱(chēng)加密算法有DES、AES等。
在互聯(lián)網(wǎng)上傳輸消息時(shí),要保證信息的安全,保證沒(méi)有高延遲。因此,對稱(chēng)加密算法和非對稱(chēng)加密算法通常結合使用。使用非對稱(chēng)加密算法對對稱(chēng)加密算法使用的密鑰進(jìn)行數字簽名和加密傳輸,然后使用對稱(chēng)加密算法對消息進(jìn)行加密和解密,保證了消息傳輸的安全性和消息的傳輸速度改善用戶(hù)體驗。
下面介紹AES加解密的python實(shí)現。其他加密算法類(lèi)似。您可以根據服務(wù)方的要求選擇使用哪種算法。AES 加密方式有五種:ECB、CBC、CTR、CFB、OFB。最常用的是CBC加密。CBC 加密需要一個(gè) 16 位的密鑰和一個(gè) 16 位的偏移量。開(kāi)發(fā)者使用服務(wù)器提供的appsecret作為加解密密鑰。具體實(shí)現如下圖所示:
圖5 AES加解密
加密的數據應與簽名一起發(fā)送到服務(wù)器。通常,消息是否使用對稱(chēng)加密是可選的。開(kāi)發(fā)者可以根據開(kāi)放平臺的規定和交易的重要性來(lái)選擇是否加密。
四、授權
各大開(kāi)放平臺都有自己的授權認證機制,最流行的機制是OAuth2.0。OAuth2.0 是一種開(kāi)放的授權標準,允許用戶(hù)授權第三方應用訪(fǎng)問(wèn)用戶(hù)在某個(gè)服務(wù)(如微博、微信、QQ等)上的特定私有資源,而無(wú)需提供帳戶(hù)密碼給第三方。對于第三方應用,無(wú)需為第三方應用注冊賬號。如果要進(jìn)行開(kāi)放平臺授權認證測試,必須按照OAuth2.0標準連接服務(wù)方。一般來(lái)說(shuō),服務(wù)提供者提供授權服務(wù),主要提供兩類(lèi)接口:
1.授權接口:接受第三方應用的授權請求。該接口通常收錄以下參數:
response_type:必需。該值固定為“代碼”。
client_id:必需。第三方應用的標識ID,即appID。
狀態(tài):可選。第三方提供的字符串,服務(wù)器將原樣返回。
redirect_uri:必需。授權成功后的重定向地址。
范圍:可選。表示要訪(fǎng)問(wèn)的資源的授權范圍。
成功訪(fǎng)問(wèn)該接口后,將獲得一個(gè)授權碼。
2.獲取訪(fǎng)問(wèn)令牌(token)接口:使用授權接口提供的授權碼向第三方應用發(fā)放訪(fǎng)問(wèn)令牌。通常收錄以下參數:
grant_type:必需。固定值“authorization_code”。
代碼:必填。授權碼在授權界面響應。
redirect_uri:必需。必須與授權接口中提供的redirect_uri相同。
client_id:必需。必須與授權界面提供的appID一致。
第三方應用獲得令牌后,可以使用令牌請求用戶(hù)授權其訪(fǎng)問(wèn)服務(wù)端存儲的資源。
以上接口的請求可以自己編碼實(shí)現。Python的django-allauth庫封裝了GitHub、Twitter、微博、微信、百度等數十種第三方授權認證方式,通過(guò)簡(jiǎn)單的配置即可應對各大廠(chǎng)商開(kāi)放平臺的授權認證測試。下圖展示了如何在django應用中注冊django-allauth第三方登錄服務(wù)。
圖6 使用django-allauth庫完成第三方授權登錄
五、總結
本文介紹了使用python連接各大開(kāi)放平臺實(shí)現簽名驗證、加解密、授權認證的測試方法,并給出了詳細的例子。開(kāi)發(fā)者可以將上述方法封裝到django或其他框架的web應用中,形成便于測試人員操作的界面。在處理簽名驗證、加解密、授權認證等測試或開(kāi)發(fā)工作時(shí),可以大大提高工作效率。
我是誰(shuí)?
我是一名資深的測試人員,從事軟件測試工作多年。今年年初花了一個(gè)月時(shí)間整理了一份2020年最適合學(xué)習的軟件測試學(xué)習干貨,可以送給每一個(gè)對軟件測試感興趣的小伙伴。想要領(lǐng)取的話(huà),可以關(guān)注我的頭條號,后臺給我發(fā)私信:【測試】,免費領(lǐng)取。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(基于python的開(kāi)放平臺簽名、加密解密以及授權認證測試體系)
目前,大型頂級公司擁有非常成熟的開(kāi)放平臺服務(wù),如微信開(kāi)放平臺、新浪微博開(kāi)放平臺、支付寶開(kāi)放平臺等。開(kāi)放平臺的發(fā)展為第三方個(gè)人或公司提供了巨大的機會(huì )。開(kāi)發(fā)者想要接入各大開(kāi)放平臺,必須遵守開(kāi)放平臺的安全機制,實(shí)現業(yè)務(wù)邏輯的前提。一是實(shí)現簽名驗證、加解密、授權鑒權機制。
本文介紹了基于python的開(kāi)放平臺簽名認證測試系統,可用于第三方應用的沙箱測試,也可應用于服務(wù)商相關(guān)系統的綜合測試。
一、簡(jiǎn)介
開(kāi)放平臺是指大型企業(yè)以業(yè)務(wù)+場(chǎng)景+解決方案+技術(shù)的優(yōu)勢,將自身的數據能力、計算能力、用戶(hù)系統、產(chǎn)品能力等資源打包,通過(guò)openAPI、openSDK等方式向第三方個(gè)人或個(gè)人開(kāi)放,和 openH5。企業(yè)使用,實(shí)現第三方與服務(wù)商企業(yè)自身的互利共贏(yíng)。
目前各大廠(chǎng)商的開(kāi)放平臺都比較成熟,如微信開(kāi)放平臺、新浪微博開(kāi)放平臺、支付寶開(kāi)放平臺等。與此同時(shí),各大商業(yè)銀行也在大力發(fā)展自身的開(kāi)放銀行服務(wù)。作為第三方開(kāi)發(fā)者,一般來(lái)說(shuō),接入開(kāi)放平臺有一個(gè)相對統一的流程。下圖為微信開(kāi)放平臺開(kāi)通流程。
圖1 微信開(kāi)放平臺接入流程
如圖1第三步所示,應用上線(xiàn)前,必須進(jìn)行必要的測試。業(yè)務(wù)邏輯測試的前提是測試簽名驗證、加解密、授權認證等安全認證機制。python社區非常成熟,廣泛應用于機器學(xué)習、數據分析、網(wǎng)絡(luò )爬蟲(chóng)、自動(dòng)化腳本等諸多領(lǐng)域。
在web開(kāi)發(fā)方面,目前有很多公司如Instagram、Quora、Lyft、Dropbox、知乎等后端使用python進(jìn)行開(kāi)發(fā)。本文介紹了基于python的簽名驗證、加解密、授權認證測試的實(shí)現。
二、簽名驗證
第三方個(gè)人或企業(yè)通過(guò)開(kāi)放平臺門(mén)戶(hù)網(wǎng)站提交申請成為開(kāi)發(fā)者。開(kāi)發(fā)者資質(zhì)認證通過(guò)后,開(kāi)發(fā)者通常會(huì )從服務(wù)商處獲得自己的appid、appsecret和證書(shū)。該證書(shū)收錄第一個(gè) 第三方開(kāi)發(fā)者的私鑰和服務(wù)提供者的公鑰。
服務(wù)提供商保留第三方開(kāi)發(fā)者的公鑰和自己的私鑰。開(kāi)發(fā)者使用自己的私鑰進(jìn)行簽名,并將消息發(fā)送到開(kāi)放平臺服務(wù)器。服務(wù)器驗證通過(guò)后,會(huì )使用自己的私鑰對返回給開(kāi)發(fā)者的消息進(jìn)行簽名,開(kāi)發(fā)者收到返回消息后,使用服務(wù)方提供的公鑰進(jìn)行驗證。通過(guò)這個(gè)過(guò)程,開(kāi)發(fā)者和服務(wù)端可以相互確認發(fā)送的消息沒(méi)有被中間人篡改。
本文的簽名驗證使用RSA算法進(jìn)行演示。使用Python的Crypto庫,安裝時(shí)需要使用pip或conda等其他包管理工具。
一般來(lái)說(shuō),開(kāi)發(fā)者需要對消息的每個(gè)字段進(jìn)行預處理。
1.去除請求字典中的所有空值或不必要的參數(如sign、sign_type等);
2. 對字典進(jìn)行排序(按照ASCII碼從小到大);
3. 按照“參數=參數值”的模式,將字典中的所有元素用“&”字符組合成一個(gè)字符串。
數據預處理功能如下圖所示:
圖2 數據預處理功能
當開(kāi)發(fā)者發(fā)送消息時(shí),會(huì )使用Hash函數從消息中生成摘要,然后用私人消息對摘要進(jìn)行加密。加密后的摘要用作消息的數字簽名,并與消息一起發(fā)送到服務(wù)器。下圖展示了RSA算法的簽名函數的實(shí)現:
圖3 數字簽名功能
首先使用hash_method函數選擇要使用的digest算法,可以根據實(shí)際情況重構函數。這里演示了 MD5 和 SHA256 算法的示例。簽名函數首先要讀取開(kāi)發(fā)者的私鑰,然后使用RSA算法完成簽名。
開(kāi)發(fā)者收到服務(wù)器返回的消息后,使用相同的Hash函數從接收到的原創(chuàng )消息中計算出消息的摘要,然后使用發(fā)送方的公鑰對消息所附的數字簽名進(jìn)行解密,如果兩個(gè)摘要是一致,開(kāi)發(fā)??者可以確認消息是服務(wù)器發(fā)送的,沒(méi)有被篡改。
圖4 簽名驗證功能
三、加解密
除了用于數字簽名之外,RAS 算法還可以用于消息的非對稱(chēng)加密。非對稱(chēng)加密比對稱(chēng)加密更安全,但由于算法強度比對稱(chēng)加密復雜,因此加解密速度比對稱(chēng)加密慢。對稱(chēng)加密算法的特點(diǎn)是計算量小、加密速度快、加密效率高。缺點(diǎn)是交易雙方使用相同的密鑰,無(wú)法保證安全。常見(jiàn)的對稱(chēng)加密算法有DES、AES等。
在互聯(lián)網(wǎng)上傳輸消息時(shí),要保證信息的安全,保證沒(méi)有高延遲。因此,對稱(chēng)加密算法和非對稱(chēng)加密算法通常結合使用。使用非對稱(chēng)加密算法對對稱(chēng)加密算法使用的密鑰進(jìn)行數字簽名和加密傳輸,然后使用對稱(chēng)加密算法對消息進(jìn)行加密和解密,保證了消息傳輸的安全性和消息的傳輸速度改善用戶(hù)體驗。
下面介紹AES加解密的python實(shí)現。其他加密算法類(lèi)似。您可以根據服務(wù)方的要求選擇使用哪種算法。AES 加密方式有五種:ECB、CBC、CTR、CFB、OFB。最常用的是CBC加密。CBC 加密需要一個(gè) 16 位的密鑰和一個(gè) 16 位的偏移量。開(kāi)發(fā)者使用服務(wù)器提供的appsecret作為加解密密鑰。具體實(shí)現如下圖所示:
圖5 AES加解密
加密的數據應與簽名一起發(fā)送到服務(wù)器。通常,消息是否使用對稱(chēng)加密是可選的。開(kāi)發(fā)者可以根據開(kāi)放平臺的規定和交易的重要性來(lái)選擇是否加密。
四、授權
各大開(kāi)放平臺都有自己的授權認證機制,最流行的機制是OAuth2.0。OAuth2.0 是一種開(kāi)放的授權標準,允許用戶(hù)授權第三方應用訪(fǎng)問(wèn)用戶(hù)在某個(gè)服務(wù)(如微博、微信、QQ等)上的特定私有資源,而無(wú)需提供帳戶(hù)密碼給第三方。對于第三方應用,無(wú)需為第三方應用注冊賬號。如果要進(jìn)行開(kāi)放平臺授權認證測試,必須按照OAuth2.0標準連接服務(wù)方。一般來(lái)說(shuō),服務(wù)提供者提供授權服務(wù),主要提供兩類(lèi)接口:
1.授權接口:接受第三方應用的授權請求。該接口通常收錄以下參數:
response_type:必需。該值固定為“代碼”。
client_id:必需。第三方應用的標識ID,即appID。
狀態(tài):可選。第三方提供的字符串,服務(wù)器將原樣返回。
redirect_uri:必需。授權成功后的重定向地址。
范圍:可選。表示要訪(fǎng)問(wèn)的資源的授權范圍。
成功訪(fǎng)問(wèn)該接口后,將獲得一個(gè)授權碼。
2.獲取訪(fǎng)問(wèn)令牌(token)接口:使用授權接口提供的授權碼向第三方應用發(fā)放訪(fǎng)問(wèn)令牌。通常收錄以下參數:
grant_type:必需。固定值“authorization_code”。
代碼:必填。授權碼在授權界面響應。
redirect_uri:必需。必須與授權接口中提供的redirect_uri相同。
client_id:必需。必須與授權界面提供的appID一致。
第三方應用獲得令牌后,可以使用令牌請求用戶(hù)授權其訪(fǎng)問(wèn)服務(wù)端存儲的資源。
以上接口的請求可以自己編碼實(shí)現。Python的django-allauth庫封裝了GitHub、Twitter、微博、微信、百度等數十種第三方授權認證方式,通過(guò)簡(jiǎn)單的配置即可應對各大廠(chǎng)商開(kāi)放平臺的授權認證測試。下圖展示了如何在django應用中注冊django-allauth第三方登錄服務(wù)。
圖6 使用django-allauth庫完成第三方授權登錄
五、總結
本文介紹了使用python連接各大開(kāi)放平臺實(shí)現簽名驗證、加解密、授權認證的測試方法,并給出了詳細的例子。開(kāi)發(fā)者可以將上述方法封裝到django或其他框架的web應用中,形成便于測試人員操作的界面。在處理簽名驗證、加解密、授權認證等測試或開(kāi)發(fā)工作時(shí),可以大大提高工作效率。
我是誰(shuí)?
我是一名資深的測試人員,從事軟件測試工作多年。今年年初花了一個(gè)月時(shí)間整理了一份2020年最適合學(xué)習的軟件測試學(xué)習干貨,可以送給每一個(gè)對軟件測試感興趣的小伙伴。想要領(lǐng)取的話(huà),可以關(guān)注我的頭條號,后臺給我發(fā)私信:【測試】,免費領(lǐng)取。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺注冊開(kāi)發(fā)者并獲取app和appsecret百度很容易)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2021-10-10 10:36
前言:微博開(kāi)放平臺提供了微博數據的api接口。不僅可以直接使用api調用微博服務(wù)發(fā)布微博和查詢(xún)微博,更重要的是可以通過(guò)自己的網(wǎng)站api授權獲取新浪微博,調用微博的一些內容,好像我們看到了在網(wǎng)站、文章想分享到微博或其他社交網(wǎng)站,非常方便。
下面就讓我們來(lái)探究一下其中的奧秘。
1.注冊開(kāi)發(fā)者,獲取app key和app secret
百度可以輕松找到微博開(kāi)放平臺的入口,登錄微博賬號,點(diǎn)擊賬號頭像,會(huì )提示編輯開(kāi)發(fā)者信息。
可以看到如下頁(yè)面,按照提示填寫(xiě)即可,緊急聯(lián)系人可以自己填寫(xiě),網(wǎng)站無(wú)所謂,自己填寫(xiě)百度即可。
提交后,您需要在我的應用程序中驗證您的真實(shí)姓名。上傳圖片時(shí)請耐心等待。有點(diǎn)慢,沒(méi)有上傳進(jìn)度。上傳后,點(diǎn)擊返回跳轉到新頁(yè)面:
根據您的需要選擇,然后創(chuàng )建您自己的應用程序。至于各個(gè)應用術(shù)語(yǔ)的含義,我不是很清楚。我選擇了其他應用
創(chuàng )建后,您將收到一封收錄應用密鑰和應用機密的電子郵件。這是獲得授權的關(guān)鍵。
2.獲取令牌
在首頁(yè)點(diǎn)擊api接口,會(huì )跳轉到api接口文檔頁(yè)面。你會(huì )發(fā)現這個(gè)api有很多功能,包括創(chuàng )建微博、刪除微博、關(guān)注/取消關(guān)注等很多接口,但是每個(gè)接口都需要一個(gè)token才能訪(fǎng)問(wèn)。令牌從哪里來(lái)?
一是要拿到code,二是要有調用接口的網(wǎng)址(因為我申請的是web應用)。
設置關(guān)聯(lián)的 URL:
單擊您的應用程序名稱(chēng),然后在左側菜單中找到高級信息,然后您可以對其進(jìn)行編輯。
在api界面下點(diǎn)擊
, 進(jìn)入授權界面查看使用情況
根據示例,您需要發(fā)送收錄 client_id 和 redirect_uri 的 get 請求??梢灾苯悠唇?。
https://api.weibo.com/oauth2/a ... Dcode
其中client_id是你申請的app key,redirect_uri是你要回調的接口地址,api會(huì )原樣返回??梢灾苯釉跒g覽器中輸入url,如下圖:
這個(gè)頁(yè)面是不是很熟悉?授權后網(wǎng)頁(yè)會(huì )跳轉回redirect_uri頁(yè)面,url后面會(huì )寫(xiě)code。所以代碼在那里
接下來(lái)獲取授權token,第二個(gè)授權接口:
頁(yè)面上有詳細的用法,發(fā)送http post請求,我是用java http-client4.5來(lái)做的,其實(shí)其他方法也可以。
代碼寫(xiě)得不好,但多少有用。5 個(gè)必需的參數值。我們已經(jīng)拿到了最后兩個(gè),前兩個(gè)在郵件里。代碼將不會(huì )發(fā)布。打理好自己的打字,會(huì )幫助你熟悉用法,以后難免會(huì )提出各種要求。
至此,我們已經(jīng)授權成功,返回值中就是需要的token值了。如果返回錯誤,請查看錯誤信息或百度錯誤信息。
之后,您只需要帶上令牌來(lái)請求各種接口。雖然有次數限制,但正常使用應該足夠了。
后記:
1. 本來(lái)想做一些爬蟲(chóng)類(lèi)的功能。我想在微博開(kāi)放界面獲取一些數據。不過(guò)從API來(lái)看,大部分都是基于web應用的微博分享功能。
比如自己的微博、粉絲、發(fā)微博、關(guān)注等,都不是你需要的。
2. 前面說(shuō)過(guò),微博開(kāi)放api主要是第三方網(wǎng)站或者app用來(lái)訪(fǎng)問(wèn)微博,用微博登錄或者通過(guò)api分享微博,所以這方面是完全需要的您可以深入研究 api 接口。
在3.api接口中,所有的get請求都可以通過(guò)直接拼接字符串的方式獲取,但是對于剛剛請求授權的get請求,需要用戶(hù)的賬號同意向應用授權,所以必須登錄用戶(hù)帳戶(hù)。如果瀏覽器保留了微博登錄的cookie,那么瀏覽器可以自動(dòng)登錄獲取目標碼,如果沒(méi)有會(huì )提示登錄
所以這個(gè)請求適合在瀏覽器上做,因為發(fā)送帶有代碼的請求模擬登錄,或者登錄后使用cookies都非常麻煩。但是api中的其他get請求不會(huì )有這個(gè)問(wèn)題,直接帶上token就可以了。模擬登錄可以使用selenium的webdriver來(lái)獲取cookies。其他模擬登錄的方法一般都很麻煩。
當然,如果你把它嵌入到網(wǎng)站上,那么登錄是用戶(hù)的事。
4.以發(fā)送微博為例:
@Test
public void test2() throws IOException {
CloseableHttpClient client = HttpClients.createDefault();
CloseableHttpResponse response = null;
RequestConfig config =
RequestConfig.custom().setConnectTimeout(10000)
.setSocketTimeout(10000).build();
HttpPost post = new HttpPost("https://api.weibo.com/2/statuses/update.json");
post.setConfig(config);
List pairs = new ArrayList();
BasicNameValuePair p1 = new BasicNameValuePair("access_token","");
String content = "本條微博通過(guò)微博開(kāi)放接口發(fā)送";
BasicNameValuePair p2 = new BasicNameValuePair("status",
content);
BasicNameValuePair p3 = new BasicNameValuePair("visible","0");
pairs.add(p1);
pairs.add(p2);
pairs.add(p3);
post.setEntity(new UrlEncodedFormEntity(pairs,"utf-8"));
response = client.execute(post);
HttpEntity entities = response.getEntity();
System.out.println(EntityUtils.toString(entities,"UTF-8"));
}
5.如果自己把開(kāi)放的api嵌入到自己的網(wǎng)站中,一般的做法是:在分享微博按鈕(第三方登錄按鈕)上,發(fā)送微博授權認證,用戶(hù)點(diǎn)擊授權后web頁(yè)面,后臺獲取code,根據code獲取token。之后,如果您需要提取微博的用戶(hù)名,您可以直接在后臺發(fā)送請求。如果分享到微博,也可以通過(guò)api來(lái)完成。
如果以后在實(shí)踐中用到這些功能,請做好記錄。本文到此結束。
來(lái)自維茲 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺注冊開(kāi)發(fā)者并獲取app和appsecret百度很容易)
前言:微博開(kāi)放平臺提供了微博數據的api接口。不僅可以直接使用api調用微博服務(wù)發(fā)布微博和查詢(xún)微博,更重要的是可以通過(guò)自己的網(wǎng)站api授權獲取新浪微博,調用微博的一些內容,好像我們看到了在網(wǎng)站、文章想分享到微博或其他社交網(wǎng)站,非常方便。
下面就讓我們來(lái)探究一下其中的奧秘。
1.注冊開(kāi)發(fā)者,獲取app key和app secret
百度可以輕松找到微博開(kāi)放平臺的入口,登錄微博賬號,點(diǎn)擊賬號頭像,會(huì )提示編輯開(kāi)發(fā)者信息。

可以看到如下頁(yè)面,按照提示填寫(xiě)即可,緊急聯(lián)系人可以自己填寫(xiě),網(wǎng)站無(wú)所謂,自己填寫(xiě)百度即可。

提交后,您需要在我的應用程序中驗證您的真實(shí)姓名。上傳圖片時(shí)請耐心等待。有點(diǎn)慢,沒(méi)有上傳進(jìn)度。上傳后,點(diǎn)擊返回跳轉到新頁(yè)面:

根據您的需要選擇,然后創(chuàng )建您自己的應用程序。至于各個(gè)應用術(shù)語(yǔ)的含義,我不是很清楚。我選擇了其他應用


創(chuàng )建后,您將收到一封收錄應用密鑰和應用機密的電子郵件。這是獲得授權的關(guān)鍵。
2.獲取令牌
在首頁(yè)點(diǎn)擊api接口,會(huì )跳轉到api接口文檔頁(yè)面。你會(huì )發(fā)現這個(gè)api有很多功能,包括創(chuàng )建微博、刪除微博、關(guān)注/取消關(guān)注等很多接口,但是每個(gè)接口都需要一個(gè)token才能訪(fǎng)問(wèn)。令牌從哪里來(lái)?
一是要拿到code,二是要有調用接口的網(wǎng)址(因為我申請的是web應用)。
設置關(guān)聯(lián)的 URL:

單擊您的應用程序名稱(chēng),然后在左側菜單中找到高級信息,然后您可以對其進(jìn)行編輯。

在api界面下點(diǎn)擊

, 進(jìn)入授權界面查看使用情況

根據示例,您需要發(fā)送收錄 client_id 和 redirect_uri 的 get 請求??梢灾苯悠唇?。
https://api.weibo.com/oauth2/a ... Dcode
其中client_id是你申請的app key,redirect_uri是你要回調的接口地址,api會(huì )原樣返回??梢灾苯釉跒g覽器中輸入url,如下圖:

這個(gè)頁(yè)面是不是很熟悉?授權后網(wǎng)頁(yè)會(huì )跳轉回redirect_uri頁(yè)面,url后面會(huì )寫(xiě)code。所以代碼在那里
接下來(lái)獲取授權token,第二個(gè)授權接口:

頁(yè)面上有詳細的用法,發(fā)送http post請求,我是用java http-client4.5來(lái)做的,其實(shí)其他方法也可以。

代碼寫(xiě)得不好,但多少有用。5 個(gè)必需的參數值。我們已經(jīng)拿到了最后兩個(gè),前兩個(gè)在郵件里。代碼將不會(huì )發(fā)布。打理好自己的打字,會(huì )幫助你熟悉用法,以后難免會(huì )提出各種要求。
至此,我們已經(jīng)授權成功,返回值中就是需要的token值了。如果返回錯誤,請查看錯誤信息或百度錯誤信息。
之后,您只需要帶上令牌來(lái)請求各種接口。雖然有次數限制,但正常使用應該足夠了。
后記:
1. 本來(lái)想做一些爬蟲(chóng)類(lèi)的功能。我想在微博開(kāi)放界面獲取一些數據。不過(guò)從API來(lái)看,大部分都是基于web應用的微博分享功能。
比如自己的微博、粉絲、發(fā)微博、關(guān)注等,都不是你需要的。

2. 前面說(shuō)過(guò),微博開(kāi)放api主要是第三方網(wǎng)站或者app用來(lái)訪(fǎng)問(wèn)微博,用微博登錄或者通過(guò)api分享微博,所以這方面是完全需要的您可以深入研究 api 接口。
在3.api接口中,所有的get請求都可以通過(guò)直接拼接字符串的方式獲取,但是對于剛剛請求授權的get請求,需要用戶(hù)的賬號同意向應用授權,所以必須登錄用戶(hù)帳戶(hù)。如果瀏覽器保留了微博登錄的cookie,那么瀏覽器可以自動(dòng)登錄獲取目標碼,如果沒(méi)有會(huì )提示登錄

所以這個(gè)請求適合在瀏覽器上做,因為發(fā)送帶有代碼的請求模擬登錄,或者登錄后使用cookies都非常麻煩。但是api中的其他get請求不會(huì )有這個(gè)問(wèn)題,直接帶上token就可以了。模擬登錄可以使用selenium的webdriver來(lái)獲取cookies。其他模擬登錄的方法一般都很麻煩。
當然,如果你把它嵌入到網(wǎng)站上,那么登錄是用戶(hù)的事。
4.以發(fā)送微博為例:
@Test
public void test2() throws IOException {
CloseableHttpClient client = HttpClients.createDefault();
CloseableHttpResponse response = null;
RequestConfig config =
RequestConfig.custom().setConnectTimeout(10000)
.setSocketTimeout(10000).build();
HttpPost post = new HttpPost("https://api.weibo.com/2/statuses/update.json");
post.setConfig(config);
List pairs = new ArrayList();
BasicNameValuePair p1 = new BasicNameValuePair("access_token","");
String content = "本條微博通過(guò)微博開(kāi)放接口發(fā)送";
BasicNameValuePair p2 = new BasicNameValuePair("status",
content);
BasicNameValuePair p3 = new BasicNameValuePair("visible","0");
pairs.add(p1);
pairs.add(p2);
pairs.add(p3);
post.setEntity(new UrlEncodedFormEntity(pairs,"utf-8"));
response = client.execute(post);
HttpEntity entities = response.getEntity();
System.out.println(EntityUtils.toString(entities,"UTF-8"));
}

5.如果自己把開(kāi)放的api嵌入到自己的網(wǎng)站中,一般的做法是:在分享微博按鈕(第三方登錄按鈕)上,發(fā)送微博授權認證,用戶(hù)點(diǎn)擊授權后web頁(yè)面,后臺獲取code,根據code獲取token。之后,如果您需要提取微博的用戶(hù)名,您可以直接在后臺發(fā)送請求。如果分享到微博,也可以通過(guò)api來(lái)完成。
如果以后在實(shí)踐中用到這些功能,請做好記錄。本文到此結束。
來(lái)自維茲
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺API調用和TWITTER接口一樣的限定規則)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 71 次瀏覽 ? 2021-10-10 10:29
新浪微博開(kāi)放平臺API調用與TWITTER接口相同,有時(shí)間限制和限制。
他有兩個(gè)限制原則
1.用戶(hù)不基于IP限制登錄,每小時(shí)1000次
2. 用戶(hù)以基于用戶(hù)的限制登錄,每小時(shí)1000次
如果應用是用戶(hù)未登錄,則IP被限制。建議登錄破解瓶頸,否則不討論。
新浪給出了具體限制
開(kāi)發(fā)者可以通過(guò) rate_limit_status 接口查看調用頻率
rate_limit_status 接口文檔
接口返回如下信息
數組([remaining_hits] => 999 [hourly_limit] => 1000 [reset_time_in_seconds] => 2717 [reset_time] => 12 月 14 日星期二 17:00:00 +0800 2010)
代表
剩余數量為999次,
每小時(shí)限制1000次,
計數器復位的剩余時(shí)間為 2717 秒,
下次重置時(shí)間為 17:00。
對于小型非授權應用程序,這樣的調用頻率已不再足夠。最簡(jiǎn)單的方法是使用多個(gè)賬號和多個(gè)APP_KEY,相當于做一個(gè)賬號輪詢(xún)。
首先,多注冊幾個(gè)微博賬號,存儲在一個(gè)數組中,每次隨機調用一個(gè),這樣可以輕松達到3000個(gè)。
$wb_id = array('|password','|password','|password');
列表($wb_name,$wb_password)=explode(“|”,$wb_id[array_rand($wb_id)]);
如果用同樣的方法列出幾個(gè)APP_KEY,重復組合,就會(huì )更多。比如2個(gè)APP_KEY,3個(gè)賬號,上限可以達到6000。
我個(gè)人用了3個(gè)APP_KEY,4個(gè)賬號,每小時(shí)1.20000的量就夠了。
另一種快速注冊微博賬號的方法
第一步,
去gmail注冊一個(gè)長(cháng)賬號,多長(cháng)時(shí)間?反正越長(cháng)越好,一個(gè)原則信比你想注冊的微博賬號長(cháng)
例如
第二步,
使用此賬號注冊新浪
第一次使用
第二次使用
第三次使用
....
以此類(lèi)推,一個(gè)郵箱可以注冊多個(gè)新浪微博。無(wú)需來(lái)回重新注冊郵箱。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺API調用和TWITTER接口一樣的限定規則)
新浪微博開(kāi)放平臺API調用與TWITTER接口相同,有時(shí)間限制和限制。
他有兩個(gè)限制原則
1.用戶(hù)不基于IP限制登錄,每小時(shí)1000次
2. 用戶(hù)以基于用戶(hù)的限制登錄,每小時(shí)1000次
如果應用是用戶(hù)未登錄,則IP被限制。建議登錄破解瓶頸,否則不討論。
新浪給出了具體限制
開(kāi)發(fā)者可以通過(guò) rate_limit_status 接口查看調用頻率
rate_limit_status 接口文檔
接口返回如下信息
數組([remaining_hits] => 999 [hourly_limit] => 1000 [reset_time_in_seconds] => 2717 [reset_time] => 12 月 14 日星期二 17:00:00 +0800 2010)
代表
剩余數量為999次,
每小時(shí)限制1000次,
計數器復位的剩余時(shí)間為 2717 秒,
下次重置時(shí)間為 17:00。
對于小型非授權應用程序,這樣的調用頻率已不再足夠。最簡(jiǎn)單的方法是使用多個(gè)賬號和多個(gè)APP_KEY,相當于做一個(gè)賬號輪詢(xún)。
首先,多注冊幾個(gè)微博賬號,存儲在一個(gè)數組中,每次隨機調用一個(gè),這樣可以輕松達到3000個(gè)。
$wb_id = array('|password','|password','|password');
列表($wb_name,$wb_password)=explode(“|”,$wb_id[array_rand($wb_id)]);
如果用同樣的方法列出幾個(gè)APP_KEY,重復組合,就會(huì )更多。比如2個(gè)APP_KEY,3個(gè)賬號,上限可以達到6000。
我個(gè)人用了3個(gè)APP_KEY,4個(gè)賬號,每小時(shí)1.20000的量就夠了。
另一種快速注冊微博賬號的方法
第一步,
去gmail注冊一個(gè)長(cháng)賬號,多長(cháng)時(shí)間?反正越長(cháng)越好,一個(gè)原則信比你想注冊的微博賬號長(cháng)
例如
第二步,
使用此賬號注冊新浪
第一次使用
第二次使用
第三次使用
....
以此類(lèi)推,一個(gè)郵箱可以注冊多個(gè)新浪微博。無(wú)需來(lái)回重新注冊郵箱。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺(api同步微博內容至自己網(wǎng)站))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 69 次瀏覽 ? 2021-10-09 08:04
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站新浪微博關(guān)注</a>
前端把微博的鏈接請求發(fā)給后端服務(wù)器,會(huì )返回轉發(fā)的url,服務(wù)器根據url里的id把這條微博轉發(fā)給相應的網(wǎng)站。例如:微博用戶(hù)頁(yè),微博轉發(fā)頁(yè)面url=""//新浪微博轉發(fā)微博鏈接headerhref=""//新浪微博自定義地址sign="text/html,application/xhtml+xml,application/xml;q=0.9"//后端headerdata={"user-agent":"mozilla/5.0(windowsnt10.0;win64;x6。
4)applewebkit/537.36(khtml,likegecko)chrome/74.0.3033.110safari/537.36","ispublishers":"keep-alive","mms":"5.0"}
新浪官方做了一個(gè)可以對新浪微博中鏈接進(jìn)行互訪(fǎng)的api,很有用,我寫(xiě)了一個(gè)專(zhuān)門(mén)用于新浪微博互訪(fǎng)的web框架,
這個(gè)可以實(shí)現,先把新浪微博的數據抓到,然后微博數據庫中查出微博地址轉發(fā)給相應網(wǎng)站,然后轉發(fā)到自己的網(wǎng)站上。
剛遇到,使用互聯(lián)網(wǎng)開(kāi)放平臺(api),然后后端轉發(fā)給對應網(wǎng)站。開(kāi)放平臺把數據流轉發(fā)給對應網(wǎng)站的服務(wù)器,再由對應網(wǎng)站服務(wù)器再把數據轉發(fā)給后端。
通過(guò)流分析收集微博內容,然后直接通過(guò)爬蟲(chóng)抓取過(guò)來(lái)。
1、excel或者powerbi做流程圖;
2、用網(wǎng)頁(yè)版新浪提供; 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺(api同步微博內容至自己網(wǎng)站))
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站新浪微博關(guān)注</a>
前端把微博的鏈接請求發(fā)給后端服務(wù)器,會(huì )返回轉發(fā)的url,服務(wù)器根據url里的id把這條微博轉發(fā)給相應的網(wǎng)站。例如:微博用戶(hù)頁(yè),微博轉發(fā)頁(yè)面url=""//新浪微博轉發(fā)微博鏈接headerhref=""//新浪微博自定義地址sign="text/html,application/xhtml+xml,application/xml;q=0.9"//后端headerdata={"user-agent":"mozilla/5.0(windowsnt10.0;win64;x6。
4)applewebkit/537.36(khtml,likegecko)chrome/74.0.3033.110safari/537.36","ispublishers":"keep-alive","mms":"5.0"}
新浪官方做了一個(gè)可以對新浪微博中鏈接進(jìn)行互訪(fǎng)的api,很有用,我寫(xiě)了一個(gè)專(zhuān)門(mén)用于新浪微博互訪(fǎng)的web框架,
這個(gè)可以實(shí)現,先把新浪微博的數據抓到,然后微博數據庫中查出微博地址轉發(fā)給相應網(wǎng)站,然后轉發(fā)到自己的網(wǎng)站上。
剛遇到,使用互聯(lián)網(wǎng)開(kāi)放平臺(api),然后后端轉發(fā)給對應網(wǎng)站。開(kāi)放平臺把數據流轉發(fā)給對應網(wǎng)站的服務(wù)器,再由對應網(wǎng)站服務(wù)器再把數據轉發(fā)給后端。
通過(guò)流分析收集微博內容,然后直接通過(guò)爬蟲(chóng)抓取過(guò)來(lái)。
1、excel或者powerbi做流程圖;
2、用網(wǎng)頁(yè)版新浪提供;
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 60 次瀏覽 ? 2021-10-06 10:03
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站,方便所有中文字體開(kāi)發(fā)者使用。
開(kāi)放平臺不了解,不過(guò)我聽(tīng)說(shuō)可以用apilink,國內比較領(lǐng)先的文字轉引擎,支持的場(chǎng)景還是蠻多的,
可以關(guān)注下“simplemouse”這款app,主要用來(lái)做文字轉,
微博開(kāi)放平臺::。
有一個(gè)功能叫智能轉換,可以達到所有人都可以使用,在googlereader里面登錄賬號,并授權,那么別人無(wú)論是手機端,還是網(wǎng)頁(yè)端,只要有相同的標題,在閱讀過(guò)程中,都可以收聽(tīng)你的內容。實(shí)現方法:登錄谷歌reader賬號,添加賬號,當前用戶(hù)是可以直接直接登錄谷歌reader里面的賬號的,同理,所有用戶(hù)也都可以登錄同一個(gè)賬號。
打開(kāi)readitlater,新建文章,同一標題,同一內容,系統就會(huì )自動(dòng)收聽(tīng)你的音頻,省去你登錄多個(gè)賬號的步驟。音頻的長(cháng)度:所有未經(jīng)過(guò)長(cháng)短號轉換的全免費音頻,可以無(wú)限制的轉換。音頻的音量:音量是60即可,自己可以調節。轉換之后文章不會(huì )加長(cháng)或者減短。上傳音頻:文章上傳的時(shí)候,選擇文章文件大小,選擇輸出比特率,這樣音頻會(huì )根據你電腦是網(wǎng)絡(luò )過(guò)載還是網(wǎng)絡(luò )不好調整成其他形式,只要你能拿到音頻長(cháng)度,并且實(shí)時(shí)收聽(tīng),基本上也是沒(méi)有任何問(wèn)題的。
所以我相信國內一定還有很多人都在用,畢竟谷歌reader目前已經(jīng)極度完善的情況下,還有那么多的問(wèn)題,確實(shí)也有必要好好思考一下。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(圖))
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站,方便所有中文字體開(kāi)發(fā)者使用。
開(kāi)放平臺不了解,不過(guò)我聽(tīng)說(shuō)可以用apilink,國內比較領(lǐng)先的文字轉引擎,支持的場(chǎng)景還是蠻多的,
可以關(guān)注下“simplemouse”這款app,主要用來(lái)做文字轉,
微博開(kāi)放平臺::。
有一個(gè)功能叫智能轉換,可以達到所有人都可以使用,在googlereader里面登錄賬號,并授權,那么別人無(wú)論是手機端,還是網(wǎng)頁(yè)端,只要有相同的標題,在閱讀過(guò)程中,都可以收聽(tīng)你的內容。實(shí)現方法:登錄谷歌reader賬號,添加賬號,當前用戶(hù)是可以直接直接登錄谷歌reader里面的賬號的,同理,所有用戶(hù)也都可以登錄同一個(gè)賬號。
打開(kāi)readitlater,新建文章,同一標題,同一內容,系統就會(huì )自動(dòng)收聽(tīng)你的音頻,省去你登錄多個(gè)賬號的步驟。音頻的長(cháng)度:所有未經(jīng)過(guò)長(cháng)短號轉換的全免費音頻,可以無(wú)限制的轉換。音頻的音量:音量是60即可,自己可以調節。轉換之后文章不會(huì )加長(cháng)或者減短。上傳音頻:文章上傳的時(shí)候,選擇文章文件大小,選擇輸出比特率,這樣音頻會(huì )根據你電腦是網(wǎng)絡(luò )過(guò)載還是網(wǎng)絡(luò )不好調整成其他形式,只要你能拿到音頻長(cháng)度,并且實(shí)時(shí)收聽(tīng),基本上也是沒(méi)有任何問(wèn)題的。
所以我相信國內一定還有很多人都在用,畢竟谷歌reader目前已經(jīng)極度完善的情況下,還有那么多的問(wèn)題,確實(shí)也有必要好好思考一下。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(初涉外網(wǎng)資源的互聯(lián)網(wǎng)系統摸索了很長(cháng)時(shí)間無(wú)力吐槽)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 91 次瀏覽 ? 2021-10-04 11:28
最近一直在做利用三方資源的事情。由于之前做企業(yè)管理(ERP)內網(wǎng)系統,我一直在探索涉及外網(wǎng)資源的互聯(lián)網(wǎng)系統。
對于網(wǎng)上泛濫的各種教程,我實(shí)在是無(wú)力吐槽。決定分享一下這段時(shí)間遇到的各種問(wèn)題和相應的解決方法。教程分為兩個(gè)階段:一是賬號登錄,二是三方賬號和本地賬號的綁定。放心,一定和代碼級別一樣好。
第 1 部分:三方登錄:
1. 新浪微博開(kāi)放平臺要做的事情:
請耐心閱讀,一步一步操作,如圖:
?、龠M(jìn)入
?、谠谖⑦B接中選擇“網(wǎng)站訪(fǎng)問(wèn)”:
?、圻x擇立即連接:
請注意,如果您此時(shí)未登錄,或登錄后微博檢測到您不是開(kāi)發(fā)者,請填寫(xiě)并查看開(kāi)發(fā)者信息。審核會(huì )很快,點(diǎn)擊后即可通過(guò)驗證(身份驗證)
?、芴顚?xiě)網(wǎng)站信息,然后在你的網(wǎng)站主頁(yè)添加標記,本地添加成功后(在eclipse等開(kāi)發(fā)ide中添加到項目主頁(yè)),然后重新發(fā)布到你自己的服務(wù)器,(你可以重新打包成war包發(fā)布到網(wǎng)上,比如我用的是騰訊的阿里云主機)。確認以上步驟完成后,點(diǎn)擊“驗證并添加”,微博中的某段代碼會(huì )自動(dòng)讀取你在項目首頁(yè)添加的header,如果有則驗證成功。
?、萁?jīng)過(guò)以上過(guò)程,你的網(wǎng)站已經(jīng)添加成功。這時(shí)候微博會(huì )發(fā)給你你的網(wǎng)站的appKey,(appkey)是你的網(wǎng)站的唯一標識。
查找您自己的 appkey,如下所示:
點(diǎn)擊我的申請:
這時(shí)候會(huì )有appkey的值,你肯定會(huì )看到
完成這些步驟后,請設置您的授權回調頁(yè)面:
解釋
1.授權回調頁(yè)面是用戶(hù)登錄到您使用微博賬號訪(fǎng)問(wèn)過(guò)的網(wǎng)站(您的網(wǎng)站首頁(yè))后,會(huì )收到用戶(hù)個(gè)人openID和accessToken的頁(yè)面或其他頁(yè)面)
2. 通俗地說(shuō),就是用戶(hù)在成功授權你的應用后(登錄成功后)被重定向到的頁(yè)面。
設置如下
點(diǎn)擊上圖中的界面管理:
然后點(diǎn)擊授權機制,右側頁(yè)面有授權回調頁(yè)面的設置:
點(diǎn)擊編輯,切換到自己的網(wǎng)站首頁(yè)或對應的授權回調頁(yè)面。(如:(優(yōu)雅的restful url))等。
這時(shí)候網(wǎng)站的申請已經(jīng)完成了,騷年,開(kāi)始寫(xiě)代碼。
在你的主頁(yè)或登錄界面設置登錄按鈕,這里我們選擇后者(僅用于測試,真正的開(kāi)發(fā)應該在首頁(yè)顯示登錄按鈕,點(diǎn)擊登錄按鈕后,頁(yè)面跳轉到登錄界面,有登錄按鈕新浪微博)注意微博有登錄組件,這里我們使用自定義按鈕:
進(jìn)行如下操作:
?、? 在 weibo.js 中引入
appkey=寫(xiě)你的應用密鑰網(wǎng)站。
?、? 設置您的登錄按鈕
?、? 在微博登錄按鈕上設置一個(gè) οnclick="weibologin()" 事件:
?、芫帉?xiě)用戶(hù)授權登錄和綁定的js代碼:
隱藏表單如下所示:
spring 安全框架用于用戶(hù)認證和授權。
基本上就是這樣。我相信那些想做這件事的人也知道 Ajax。因為后端代碼比較保密,不能寫(xiě)。ajax請求對應的服務(wù)端處理代碼,請自行完成,基本流程是這樣的,有不懂的請留言::1061328217
一切平安。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(初涉外網(wǎng)資源的互聯(lián)網(wǎng)系統摸索了很長(cháng)時(shí)間無(wú)力吐槽)
最近一直在做利用三方資源的事情。由于之前做企業(yè)管理(ERP)內網(wǎng)系統,我一直在探索涉及外網(wǎng)資源的互聯(lián)網(wǎng)系統。
對于網(wǎng)上泛濫的各種教程,我實(shí)在是無(wú)力吐槽。決定分享一下這段時(shí)間遇到的各種問(wèn)題和相應的解決方法。教程分為兩個(gè)階段:一是賬號登錄,二是三方賬號和本地賬號的綁定。放心,一定和代碼級別一樣好。
第 1 部分:三方登錄:
1. 新浪微博開(kāi)放平臺要做的事情:
請耐心閱讀,一步一步操作,如圖:
?、龠M(jìn)入
?、谠谖⑦B接中選擇“網(wǎng)站訪(fǎng)問(wèn)”:
?、圻x擇立即連接:
請注意,如果您此時(shí)未登錄,或登錄后微博檢測到您不是開(kāi)發(fā)者,請填寫(xiě)并查看開(kāi)發(fā)者信息。審核會(huì )很快,點(diǎn)擊后即可通過(guò)驗證(身份驗證)
?、芴顚?xiě)網(wǎng)站信息,然后在你的網(wǎng)站主頁(yè)添加標記,本地添加成功后(在eclipse等開(kāi)發(fā)ide中添加到項目主頁(yè)),然后重新發(fā)布到你自己的服務(wù)器,(你可以重新打包成war包發(fā)布到網(wǎng)上,比如我用的是騰訊的阿里云主機)。確認以上步驟完成后,點(diǎn)擊“驗證并添加”,微博中的某段代碼會(huì )自動(dòng)讀取你在項目首頁(yè)添加的header,如果有則驗證成功。
?、萁?jīng)過(guò)以上過(guò)程,你的網(wǎng)站已經(jīng)添加成功。這時(shí)候微博會(huì )發(fā)給你你的網(wǎng)站的appKey,(appkey)是你的網(wǎng)站的唯一標識。
查找您自己的 appkey,如下所示:
點(diǎn)擊我的申請:
這時(shí)候會(huì )有appkey的值,你肯定會(huì )看到
完成這些步驟后,請設置您的授權回調頁(yè)面:
解釋
1.授權回調頁(yè)面是用戶(hù)登錄到您使用微博賬號訪(fǎng)問(wèn)過(guò)的網(wǎng)站(您的網(wǎng)站首頁(yè))后,會(huì )收到用戶(hù)個(gè)人openID和accessToken的頁(yè)面或其他頁(yè)面)
2. 通俗地說(shuō),就是用戶(hù)在成功授權你的應用后(登錄成功后)被重定向到的頁(yè)面。
設置如下
點(diǎn)擊上圖中的界面管理:
然后點(diǎn)擊授權機制,右側頁(yè)面有授權回調頁(yè)面的設置:
點(diǎn)擊編輯,切換到自己的網(wǎng)站首頁(yè)或對應的授權回調頁(yè)面。(如:(優(yōu)雅的restful url))等。
這時(shí)候網(wǎng)站的申請已經(jīng)完成了,騷年,開(kāi)始寫(xiě)代碼。
在你的主頁(yè)或登錄界面設置登錄按鈕,這里我們選擇后者(僅用于測試,真正的開(kāi)發(fā)應該在首頁(yè)顯示登錄按鈕,點(diǎn)擊登錄按鈕后,頁(yè)面跳轉到登錄界面,有登錄按鈕新浪微博)注意微博有登錄組件,這里我們使用自定義按鈕:
進(jìn)行如下操作:
?、? 在 weibo.js 中引入
appkey=寫(xiě)你的應用密鑰網(wǎng)站。
?、? 設置您的登錄按鈕
?、? 在微博登錄按鈕上設置一個(gè) οnclick="weibologin()" 事件:
?、芫帉?xiě)用戶(hù)授權登錄和綁定的js代碼:
隱藏表單如下所示:
spring 安全框架用于用戶(hù)認證和授權。
基本上就是這樣。我相信那些想做這件事的人也知道 Ajax。因為后端代碼比較保密,不能寫(xiě)。ajax請求對應的服務(wù)端處理代碼,請自行完成,基本流程是這樣的,有不懂的請留言::1061328217
一切平安。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(通過(guò)新浪微博API生成短鏈接,支持一次性轉多個(gè)長(cháng)鏈接)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 103 次瀏覽 ? 2021-10-04 08:40
通過(guò)新浪微博API生成短鏈接,同時(shí)支持多個(gè)長(cháng)鏈接。什么是短鏈接 短鏈接,通俗的講就是通過(guò)程序計算將長(cháng)網(wǎng)址網(wǎng)址轉換為短網(wǎng)址字符串。短鏈接服務(wù)
國內各大微博都推出了自己的短鏈接服務(wù)。比如新浪微博、騰訊微博等。
為什么選擇新浪微博API新浪微博短鏈接API是開(kāi)放的 新浪微博短鏈接API不需要用戶(hù)登錄文檔查詢(xún)鏈接使用方法
拿到自己的AppKey后,只需替換類(lèi)的成員屬性$appKey的值即可,如下圖,$shortUrl為API請求地址
// APPkey,我在網(wǎng)上找的(https://fengmk2.com/blog/appkey.html),可以自己申請
protected $appKey = '569452181';
// 轉短連接API地址
protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';
其他的,基本不需要配置,直接實(shí)例化類(lèi)ShortLink,然后調用getShortUrl方法,需要注意的是長(cháng)鏈接URL數組$longUrl中的值可以傳多個(gè)值
當然,為了方便,我把它寫(xiě)成一個(gè)類(lèi),可以根據自己的需要進(jìn)行調整,滿(mǎn)足自己的需求。
源代碼
<p> 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(通過(guò)新浪微博API生成短鏈接,支持一次性轉多個(gè)長(cháng)鏈接)
通過(guò)新浪微博API生成短鏈接,同時(shí)支持多個(gè)長(cháng)鏈接。什么是短鏈接 短鏈接,通俗的講就是通過(guò)程序計算將長(cháng)網(wǎng)址網(wǎng)址轉換為短網(wǎng)址字符串。短鏈接服務(wù)
國內各大微博都推出了自己的短鏈接服務(wù)。比如新浪微博、騰訊微博等。
為什么選擇新浪微博API新浪微博短鏈接API是開(kāi)放的 新浪微博短鏈接API不需要用戶(hù)登錄文檔查詢(xún)鏈接使用方法
拿到自己的AppKey后,只需替換類(lèi)的成員屬性$appKey的值即可,如下圖,$shortUrl為API請求地址
// APPkey,我在網(wǎng)上找的(https://fengmk2.com/blog/appkey.html),可以自己申請
protected $appKey = '569452181';
// 轉短連接API地址
protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';
其他的,基本不需要配置,直接實(shí)例化類(lèi)ShortLink,然后調用getShortUrl方法,需要注意的是長(cháng)鏈接URL數組$longUrl中的值可以傳多個(gè)值
當然,為了方便,我把它寫(xiě)成一個(gè)類(lèi),可以根據自己的需要進(jìn)行調整,滿(mǎn)足自己的需求。
源代碼
<p>
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺創(chuàng )建應用的詳細流程及應用)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 333 次瀏覽 ? 2021-10-04 08:34
一、準備。
1. 微博賬號。注冊很容易。
2.微博賬號成為開(kāi)發(fā)者。
登錄微博開(kāi)放平臺登錄您的注冊賬號,然后進(jìn)入管理中心完成開(kāi)發(fā)者基本信息和身份認證。
這時(shí)候還需要瀏覽微博開(kāi)放平臺的文檔,了解這個(gè)開(kāi)放平臺的一些規范術(shù)語(yǔ)。
單擊每個(gè)鏈接進(jìn)行查看。順便看一下微博API文檔,里面有介紹,有些接口調用需要獲取access_token。這篇文章就是為了達到這個(gè)目的。
二、創(chuàng )建一個(gè)應用程序。
比如我們要開(kāi)發(fā)一個(gè)網(wǎng)站,然后在這個(gè)網(wǎng)站中連接微博開(kāi)放平臺,調用開(kāi)放平臺的接口。然后我們需要在登錄微博開(kāi)放平臺后創(chuàng )建一個(gè)應用。
創(chuàng )建應用程序后,您將獲得應用程序的 App key 和 AppSecret。然后我們就是利用這個(gè)信息調用新浪微博的auth2.0認證獲取access_token。
拿到access_token后,我們就可以調用我們需要的接口了,比如發(fā)微博等。
1. 創(chuàng )建引用的地方。開(kāi)放平臺--》點(diǎn)擊上方導航菜單中的“微鏈接”,這里的微鏈接的概念也是這個(gè)開(kāi)放平臺的一個(gè)術(shù)語(yǔ),具體含義可以查看相關(guān)文檔。
2.創(chuàng )建什么類(lèi)型的應用程序?
隨意看看你的情況。測試時(shí),您可以創(chuàng )建任何東西,嘗試并充滿(mǎn)信心地去做。我創(chuàng )建的是一個(gè)網(wǎng)頁(yè)參考,所以我發(fā)現它很容易輸入,不需要填寫(xiě)太多信息。
如下所示:
創(chuàng )建完成后,可以在我的應用中看到:
單擊以查看與應用程序相關(guān)的信息。一會(huì )兒我們需要用到這里的app key和app secret,還需要配置應用授權回調地址。
三、下載微博開(kāi)發(fā)SDK。
開(kāi)發(fā)SDK中有一些示例,可以直接作為參考。下載鏈接。我下載了 weibo4j 的 Java 版本。下載后,我導入了開(kāi)發(fā)工具。如下所示:
代碼很多,不要慌,先在examples包下的oauth2包下找到OAuth4Code類(lèi)。我們需要運行這個(gè)類(lèi)。
這個(gè)類(lèi)完成oauth操作,這一步包括兩個(gè)請求
第一次:
https://api.weibo.com/oauth2/a ... Dcode
第二次:
https://api.weibo.com/oauth2/access_token
請注意,第一個(gè)請求中有一個(gè) client_id。這個(gè)參數需要在config.properties中配置,對應我們上面創(chuàng )建的應用的app key。
同樣,這個(gè)配置文件中有一個(gè)client_SERCRET,對應我們上面創(chuàng )建的應用的app sercret,復制進(jìn)去。
還有一個(gè)參數redirect_uri,比較關(guān)鍵。當我們運行OAuth4Code類(lèi)時(shí),第一次請求完成后,會(huì )回調這個(gè)地址,同時(shí)帶入一個(gè)code參數。
我們需要復制這個(gè)參數,在控制臺中輸入,然后回車(chē)。發(fā)起第二個(gè)請求,這個(gè)請求會(huì )返回我們需要的access_token。那么問(wèn)題來(lái)了,如何配置這個(gè)地址呢?
1. 在上面創(chuàng )建的參考中,找到接口管理--》授權機制也沒(méi)有配置回調地址的地方,填寫(xiě)即可。
2. 上面的鏈接應該在config.properties中配置,如下:
client_ID = 1234567890
client_SERCRET = 890a2ab550cf8d7a0090ff2f19850f3a
redirect_URI = https\://api.weibo.com/oauth2/default.html
baseURL=https://api.weibo.com/2/
accessTokenURL=https://api.weibo.com/oauth2/access_token
authorizeURL=https://api.weibo.com/oauth2/authorize
rmURL=https\://rm.api.weibo.com/2/
三、 運行程序獲取access_token。
上面第二步完成后,配置就完成了。運行以下類(lèi):
public class OAuth4Code {
public static void main(String [] args) throws WeiboException, IOException{
Oauth oauth = new Oauth();
BareBonesBrowserLaunch.openURL(oauth.authorize("code"));
System.out.println(oauth.authorize("code"));
System.out.print("Hit enter when it's done.[Enter]:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String code = br.readLine();
Log.logInfo("code: " + code);
try{
System.out.println(oauth.getAccessTokenByCode(code));
} catch (WeiboException e) {
if(401 == e.getStatusCode()){
Log.logInfo("Unable to get the access token.");
}else{
e.printStackTrace();
}
}
}
}
程序運行后,在控制臺輸入一行log后,進(jìn)入等待控制臺輸入的狀態(tài),瀏覽器立即打開(kāi)了一個(gè)頁(yè)面,跳轉后頁(yè)面變成了如下:
復制瀏覽器地址欄中的code參數值?;氐絤yeclipse,粘貼這個(gè)值,然后回車(chē)。程序繼續執行,使用這個(gè)code參數,再次發(fā)起請求,終于成功后就可以拿到access_token了
整個(gè)過(guò)程的效果日志:
四、本例中oauth授權流程總結。
兩次請求
第一次:
https://api.weibo.com/oauth2/a ... Dcode
同意授權后,會(huì )重定向:
//同意授權后會(huì )重定向
http://www.example.com/response&code=CODE
第二次:
按照上面的代碼再次發(fā)起請求。獲取 access_token
會(huì )有一些問(wèn)題,主要原因是授權地址配置不正確。根據本文中的示例配置,您可以成功運行程序。獲取 access_token。
錯誤代碼如下:
錯誤代碼(error) 錯誤代碼(error_code) 錯誤描述(error_description)
redirect_uri_mismatch
21322
重定向地址不匹配
無(wú)效請求
21323
請求是非法的
invalid_client
21324
client_id 或 client_secret 參數無(wú)效
invalid_grant
21325
提供的訪(fǎng)問(wèn)授權無(wú)效、已過(guò)期或已撤銷(xiāo)
未經(jīng)授權的客戶(hù)端
21326
客戶(hù)端沒(méi)有權限
expired_token
21327
令牌過(guò)期
unsupported_grant_type
21328
不支持的 GrantType
unsupported_response_type
21329
不支持的響應類(lèi)型
拒絕訪(fǎng)問(wèn)
21330
用戶(hù)或授權服務(wù)器拒絕授予數據訪(fǎng)問(wèn)權限
暫時(shí)不可用
21331
該服務(wù)暫時(shí)不可用
appkey權限被拒絕
21337
應用權限不足 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺創(chuàng )建應用的詳細流程及應用)
一、準備。
1. 微博賬號。注冊很容易。
2.微博賬號成為開(kāi)發(fā)者。
登錄微博開(kāi)放平臺登錄您的注冊賬號,然后進(jìn)入管理中心完成開(kāi)發(fā)者基本信息和身份認證。
這時(shí)候還需要瀏覽微博開(kāi)放平臺的文檔,了解這個(gè)開(kāi)放平臺的一些規范術(shù)語(yǔ)。
單擊每個(gè)鏈接進(jìn)行查看。順便看一下微博API文檔,里面有介紹,有些接口調用需要獲取access_token。這篇文章就是為了達到這個(gè)目的。
二、創(chuàng )建一個(gè)應用程序。
比如我們要開(kāi)發(fā)一個(gè)網(wǎng)站,然后在這個(gè)網(wǎng)站中連接微博開(kāi)放平臺,調用開(kāi)放平臺的接口。然后我們需要在登錄微博開(kāi)放平臺后創(chuàng )建一個(gè)應用。
創(chuàng )建應用程序后,您將獲得應用程序的 App key 和 AppSecret。然后我們就是利用這個(gè)信息調用新浪微博的auth2.0認證獲取access_token。
拿到access_token后,我們就可以調用我們需要的接口了,比如發(fā)微博等。
1. 創(chuàng )建引用的地方。開(kāi)放平臺--》點(diǎn)擊上方導航菜單中的“微鏈接”,這里的微鏈接的概念也是這個(gè)開(kāi)放平臺的一個(gè)術(shù)語(yǔ),具體含義可以查看相關(guān)文檔。
2.創(chuàng )建什么類(lèi)型的應用程序?
隨意看看你的情況。測試時(shí),您可以創(chuàng )建任何東西,嘗試并充滿(mǎn)信心地去做。我創(chuàng )建的是一個(gè)網(wǎng)頁(yè)參考,所以我發(fā)現它很容易輸入,不需要填寫(xiě)太多信息。
如下所示:

創(chuàng )建完成后,可以在我的應用中看到:

單擊以查看與應用程序相關(guān)的信息。一會(huì )兒我們需要用到這里的app key和app secret,還需要配置應用授權回調地址。
三、下載微博開(kāi)發(fā)SDK。
開(kāi)發(fā)SDK中有一些示例,可以直接作為參考。下載鏈接。我下載了 weibo4j 的 Java 版本。下載后,我導入了開(kāi)發(fā)工具。如下所示:

代碼很多,不要慌,先在examples包下的oauth2包下找到OAuth4Code類(lèi)。我們需要運行這個(gè)類(lèi)。
這個(gè)類(lèi)完成oauth操作,這一步包括兩個(gè)請求
第一次:
https://api.weibo.com/oauth2/a ... Dcode
第二次:
https://api.weibo.com/oauth2/access_token
請注意,第一個(gè)請求中有一個(gè) client_id。這個(gè)參數需要在config.properties中配置,對應我們上面創(chuàng )建的應用的app key。
同樣,這個(gè)配置文件中有一個(gè)client_SERCRET,對應我們上面創(chuàng )建的應用的app sercret,復制進(jìn)去。
還有一個(gè)參數redirect_uri,比較關(guān)鍵。當我們運行OAuth4Code類(lèi)時(shí),第一次請求完成后,會(huì )回調這個(gè)地址,同時(shí)帶入一個(gè)code參數。
我們需要復制這個(gè)參數,在控制臺中輸入,然后回車(chē)。發(fā)起第二個(gè)請求,這個(gè)請求會(huì )返回我們需要的access_token。那么問(wèn)題來(lái)了,如何配置這個(gè)地址呢?
1. 在上面創(chuàng )建的參考中,找到接口管理--》授權機制也沒(méi)有配置回調地址的地方,填寫(xiě)即可。
2. 上面的鏈接應該在config.properties中配置,如下:
client_ID = 1234567890
client_SERCRET = 890a2ab550cf8d7a0090ff2f19850f3a
redirect_URI = https\://api.weibo.com/oauth2/default.html
baseURL=https://api.weibo.com/2/
accessTokenURL=https://api.weibo.com/oauth2/access_token
authorizeURL=https://api.weibo.com/oauth2/authorize
rmURL=https\://rm.api.weibo.com/2/
三、 運行程序獲取access_token。
上面第二步完成后,配置就完成了。運行以下類(lèi):
public class OAuth4Code {
public static void main(String [] args) throws WeiboException, IOException{
Oauth oauth = new Oauth();
BareBonesBrowserLaunch.openURL(oauth.authorize("code"));
System.out.println(oauth.authorize("code"));
System.out.print("Hit enter when it's done.[Enter]:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String code = br.readLine();
Log.logInfo("code: " + code);
try{
System.out.println(oauth.getAccessTokenByCode(code));
} catch (WeiboException e) {
if(401 == e.getStatusCode()){
Log.logInfo("Unable to get the access token.");
}else{
e.printStackTrace();
}
}
}
}
程序運行后,在控制臺輸入一行log后,進(jìn)入等待控制臺輸入的狀態(tài),瀏覽器立即打開(kāi)了一個(gè)頁(yè)面,跳轉后頁(yè)面變成了如下:

復制瀏覽器地址欄中的code參數值?;氐絤yeclipse,粘貼這個(gè)值,然后回車(chē)。程序繼續執行,使用這個(gè)code參數,再次發(fā)起請求,終于成功后就可以拿到access_token了
整個(gè)過(guò)程的效果日志:

四、本例中oauth授權流程總結。
兩次請求
第一次:
https://api.weibo.com/oauth2/a ... Dcode
同意授權后,會(huì )重定向:
//同意授權后會(huì )重定向
http://www.example.com/response&code=CODE
第二次:
按照上面的代碼再次發(fā)起請求。獲取 access_token
會(huì )有一些問(wèn)題,主要原因是授權地址配置不正確。根據本文中的示例配置,您可以成功運行程序。獲取 access_token。
錯誤代碼如下:
錯誤代碼(error) 錯誤代碼(error_code) 錯誤描述(error_description)
redirect_uri_mismatch
21322
重定向地址不匹配
無(wú)效請求
21323
請求是非法的
invalid_client
21324
client_id 或 client_secret 參數無(wú)效
invalid_grant
21325
提供的訪(fǎng)問(wèn)授權無(wú)效、已過(guò)期或已撤銷(xiāo)
未經(jīng)授權的客戶(hù)端
21326
客戶(hù)端沒(méi)有權限
expired_token
21327
令牌過(guò)期
unsupported_grant_type
21328
不支持的 GrantType
unsupported_response_type
21329
不支持的響應類(lèi)型
拒絕訪(fǎng)問(wèn)
21330
用戶(hù)或授權服務(wù)器拒絕授予數據訪(fǎng)問(wèn)權限
暫時(shí)不可用
21331
該服務(wù)暫時(shí)不可用
appkey權限被拒絕
21337
應用權限不足
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(通過(guò)新浪微博API生成短鏈接,支持一次性轉多個(gè)長(cháng)鏈接)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 145 次瀏覽 ? 2021-10-19 11:05
通過(guò)新浪微博API,可以生成短鏈接,同時(shí)可以傳輸多個(gè)長(cháng)鏈接。什么是短鏈接 短鏈接,一般來(lái)說(shuō)就是通過(guò)程序計算的方式將一個(gè)長(cháng)的URL URL 轉換成一個(gè)短的URL 字符串。短鏈接服務(wù)
國內各大微博都推出了自己的短鏈接服務(wù)。比如新浪微博、騰訊微博等。
為什么選擇新浪微博API新浪微博短鏈接API是開(kāi)放的 新浪微博短鏈接API不需要用戶(hù)登錄文檔查詢(xún)鏈接使用方法
拿到自己的AppKey后,只需替換類(lèi)的成員屬性$appKey的值即可,如下圖,$shortUrl為API請求地址
// APPkey,我在網(wǎng)上找的(https://fengmk2.com/blog/appkey.html),可以自己申請
protected $appKey = '569452181';
// 轉短連接API地址
protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';
其他的,基本不需要配置,直接實(shí)例化類(lèi)ShortLink,然后調用getShortUrl方法,需要注意的是長(cháng)鏈接URL數組$longUrl中的值可以傳多個(gè)值
當然,為了方便,我把它寫(xiě)成一個(gè)類(lèi),可以根據自己的需要進(jìn)行調整,滿(mǎn)足自己的需求。
源代碼
<p> 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(通過(guò)新浪微博API生成短鏈接,支持一次性轉多個(gè)長(cháng)鏈接)
通過(guò)新浪微博API,可以生成短鏈接,同時(shí)可以傳輸多個(gè)長(cháng)鏈接。什么是短鏈接 短鏈接,一般來(lái)說(shuō)就是通過(guò)程序計算的方式將一個(gè)長(cháng)的URL URL 轉換成一個(gè)短的URL 字符串。短鏈接服務(wù)
國內各大微博都推出了自己的短鏈接服務(wù)。比如新浪微博、騰訊微博等。
為什么選擇新浪微博API新浪微博短鏈接API是開(kāi)放的 新浪微博短鏈接API不需要用戶(hù)登錄文檔查詢(xún)鏈接使用方法
拿到自己的AppKey后,只需替換類(lèi)的成員屬性$appKey的值即可,如下圖,$shortUrl為API請求地址
// APPkey,我在網(wǎng)上找的(https://fengmk2.com/blog/appkey.html),可以自己申請
protected $appKey = '569452181';
// 轉短連接API地址
protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';
其他的,基本不需要配置,直接實(shí)例化類(lèi)ShortLink,然后調用getShortUrl方法,需要注意的是長(cháng)鏈接URL數組$longUrl中的值可以傳多個(gè)值
當然,為了方便,我把它寫(xiě)成一個(gè)類(lèi),可以根據自己的需要進(jìn)行調整,滿(mǎn)足自己的需求。
源代碼
<p>
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(wordpress網(wǎng)站可以寫(xiě)php代碼1.php文件測試.php)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 76 次瀏覽 ? 2021-10-19 07:08
據說(shuō)wordpress網(wǎng)站可以在發(fā)帖時(shí)將文章同步到新浪微博,想寫(xiě)一個(gè)php代碼測試基于同樣的方法。以下內容引自:
微博同步方式大致有插件、關(guān)聯(lián)博客、非插件微博三種方式
第一種是直接在百度上搜索;
其次,因為新浪現在取消了鏈接博客的選項,但該功能并未取消??梢栽?xún)問(wèn)下面的地址,然后進(jìn)行配置。
第三種方法需要使用新浪的接口,如下:
1) 前往新浪微博開(kāi)放平臺創(chuàng )建站內應用。審核不通過(guò)沒(méi)關(guān)系,但是如果通過(guò)了,可以在微博底部展示來(lái)自XX的應用,比如來(lái)自KingGoo科技博客的圖片。如何創(chuàng )建它?在百度google上搜索,很簡(jiǎn)單(但是如果你沒(méi)有通過(guò)審核想通過(guò)審核,我可以提供付費幫助嘎嘎~),創(chuàng )建應用后,需要使用App Key申請下面的應用程序;
2)編輯你的主題的functions.php文件并在最后添加以下代碼
// 微博同步function post_to_sina_weibo($post_ID) { if( wp_is_post_revision($post_ID) ) return; $get_post_info = get_post($post_ID); $get_post_centent = get_post($post_ID)->post_content; //去掉文章內的html編碼的空格、換行、tab等符號(如果你文章的編碼格式是這樣子,可以將下面的"//"去掉即開(kāi)啟此功能) //$get_post_centent = str_replace("\t", " ", str_replace("\n", " ", str_replace(" ", " ", $get_post_centent))); $get_post_title = get_post($post_ID)->post_title; if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) { $request = new WP_Http; $status = '【' . strip_tags( $get_post_title ) . '】 ' . mb_strimwidth(strip_tags( apply_filters('the_content', $get_post_centent)),0, 132,'...') . ' 全文地址:' . get_permalink($post_ID) ; $api_url = 'https://api.weibo.com/2/statuses/update.json'; $body = array( 'status' => $status, 'source'=>'4135063399'); $headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' ); /* 如果你使用改方法,請注釋掉上面$headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' ); 換成如下代碼 //你的新浪微博登陸名 $username = '' ; //你的新浪微博登陸密碼 $password = '' ; $headers = array( 'Authorization' => 'Basic ' . base64_encode('$username:$password')); */ $result = $request->post( $api_url , array( 'body' => $body, 'headers' => $headers ) ); }}add_action('publish_post', 'post_to_sina_weibo', 0);
文章需要用到wordpress自帶的WP_Http類(lèi),我在github上找到了替代品:
關(guān)于這個(gè)類(lèi)的一個(gè)說(shuō)明:EasyHttp是一個(gè)php類(lèi),可以幫助你忽略不同的php環(huán)境條件,亂發(fā)送http請求。您不再需要關(guān)注當前的 php 環(huán)境是否支持 curl/fsockopen/fopen,EasyHttp 會(huì )自動(dòng)選擇最合適的方式進(jìn)行 http 請求。EasyHttp 派生自 WordPress 中的 WP_Http 類(lèi),它去除了對其他 WordPress 功能的所有依賴(lài),將其拆分為不同的文件,并進(jìn)行了少量的簡(jiǎn)化。
根據以上內容,編寫(xiě)php代碼1.php:
當瀏覽器訪(fǎng)問(wèn)1.php時(shí),返回如下內容:
Array ([headers] => Array ([server] => nginx/1.2.0 [date] => Sun, 13 Oct 2013 02:23:46 GMT [content-type] => text/plain;charset=UTF-8 [content-length] => 76 [connection] => close [api-server-ip] => 10.75.0.170 [變化] => Accept-Encoding [x-varnish] => 3299864740 [age] => 0 [via] => 1.1 varnish) [body] => Bad Content-Type header value:'application/ x-www-form-urlencoded; charset=' [response] => Array ([code] => 400 [message] => Bad Request) [cookies] => Array () [filename] =>)
好像是 400 Bad Request。百度一下,意思是“由于語(yǔ)法格式錯誤,服務(wù)器無(wú)法理解這個(gè)請求。不修改,客戶(hù)端程序不能重復這個(gè)請求?!?br /> 你怎么解決這個(gè)問(wèn)題? 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(wordpress網(wǎng)站可以寫(xiě)php代碼1.php文件測試.php)
據說(shuō)wordpress網(wǎng)站可以在發(fā)帖時(shí)將文章同步到新浪微博,想寫(xiě)一個(gè)php代碼測試基于同樣的方法。以下內容引自:
微博同步方式大致有插件、關(guān)聯(lián)博客、非插件微博三種方式
第一種是直接在百度上搜索;
其次,因為新浪現在取消了鏈接博客的選項,但該功能并未取消??梢栽?xún)問(wèn)下面的地址,然后進(jìn)行配置。
第三種方法需要使用新浪的接口,如下:
1) 前往新浪微博開(kāi)放平臺創(chuàng )建站內應用。審核不通過(guò)沒(méi)關(guān)系,但是如果通過(guò)了,可以在微博底部展示來(lái)自XX的應用,比如來(lái)自KingGoo科技博客的圖片。如何創(chuàng )建它?在百度google上搜索,很簡(jiǎn)單(但是如果你沒(méi)有通過(guò)審核想通過(guò)審核,我可以提供付費幫助嘎嘎~),創(chuàng )建應用后,需要使用App Key申請下面的應用程序;
2)編輯你的主題的functions.php文件并在最后添加以下代碼
// 微博同步function post_to_sina_weibo($post_ID) { if( wp_is_post_revision($post_ID) ) return; $get_post_info = get_post($post_ID); $get_post_centent = get_post($post_ID)->post_content; //去掉文章內的html編碼的空格、換行、tab等符號(如果你文章的編碼格式是這樣子,可以將下面的"//"去掉即開(kāi)啟此功能) //$get_post_centent = str_replace("\t", " ", str_replace("\n", " ", str_replace(" ", " ", $get_post_centent))); $get_post_title = get_post($post_ID)->post_title; if ( $get_post_info->post_status == 'publish' && $_POST['original_post_status'] != 'publish' ) { $request = new WP_Http; $status = '【' . strip_tags( $get_post_title ) . '】 ' . mb_strimwidth(strip_tags( apply_filters('the_content', $get_post_centent)),0, 132,'...') . ' 全文地址:' . get_permalink($post_ID) ; $api_url = 'https://api.weibo.com/2/statuses/update.json'; $body = array( 'status' => $status, 'source'=>'4135063399'); $headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' ); /* 如果你使用改方法,請注釋掉上面$headers = array( 'Authorization' => 'Basic ' . '1fFjYc3uQHZpcF32fS5jb146MxFeY19DYF53aWfzNA==' ); 換成如下代碼 //你的新浪微博登陸名 $username = '' ; //你的新浪微博登陸密碼 $password = '' ; $headers = array( 'Authorization' => 'Basic ' . base64_encode('$username:$password')); */ $result = $request->post( $api_url , array( 'body' => $body, 'headers' => $headers ) ); }}add_action('publish_post', 'post_to_sina_weibo', 0);
文章需要用到wordpress自帶的WP_Http類(lèi),我在github上找到了替代品:
關(guān)于這個(gè)類(lèi)的一個(gè)說(shuō)明:EasyHttp是一個(gè)php類(lèi),可以幫助你忽略不同的php環(huán)境條件,亂發(fā)送http請求。您不再需要關(guān)注當前的 php 環(huán)境是否支持 curl/fsockopen/fopen,EasyHttp 會(huì )自動(dòng)選擇最合適的方式進(jìn)行 http 請求。EasyHttp 派生自 WordPress 中的 WP_Http 類(lèi),它去除了對其他 WordPress 功能的所有依賴(lài),將其拆分為不同的文件,并進(jìn)行了少量的簡(jiǎn)化。
根據以上內容,編寫(xiě)php代碼1.php:
當瀏覽器訪(fǎng)問(wèn)1.php時(shí),返回如下內容:
Array ([headers] => Array ([server] => nginx/1.2.0 [date] => Sun, 13 Oct 2013 02:23:46 GMT [content-type] => text/plain;charset=UTF-8 [content-length] => 76 [connection] => close [api-server-ip] => 10.75.0.170 [變化] => Accept-Encoding [x-varnish] => 3299864740 [age] => 0 [via] => 1.1 varnish) [body] => Bad Content-Type header value:'application/ x-www-form-urlencoded; charset=' [response] => Array ([code] => 400 [message] => Bad Request) [cookies] => Array () [filename] =>)
好像是 400 Bad Request。百度一下,意思是“由于語(yǔ)法格式錯誤,服務(wù)器無(wú)法理解這個(gè)請求。不修改,客戶(hù)端程序不能重復這個(gè)請求?!?br /> 你怎么解決這個(gè)問(wèn)題?
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(WeiboSDK新浪微博SDKv3源碼和示例(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 58 次瀏覽 ? 2021-10-18 00:17
WeiboSDK 新浪微博SDK v3 源代碼和示例前言
時(shí)間過(guò)得真快,距離上次SDK更新已經(jīng)3年多了。隨著(zhù)正式版的不斷更新,老SDK的部分接口已經(jīng)不能正常使用了。于是,QQ群里抱怨辱罵的朋友開(kāi)始增多。隨著(zhù)時(shí)代的發(fā)展,微博已經(jīng)被微信徹底甩掉,失去了興趣;同時(shí),對于我自己來(lái)說(shuō),在這個(gè)行業(yè)里為了生存而生存幾年后,日子越來(lái)越不好過(guò),我沒(méi)有時(shí)間。然后和新浪官方同步更新SDK,所以自13年之后,V2版本的SDK就沒(méi)有再更新了。雖然微博的風(fēng)潮沒(méi)了,但還是有很多朋友通過(guò)新浪開(kāi)放平臺頁(yè)面下載了我發(fā)布的SDK??梢哉f(shuō),由于長(cháng)期不更新,老版本嚴重誤導了新朋友。這也是我開(kāi)發(fā)的。SDK 新版本的另一個(gè)重要原因。SDK第三版的一些說(shuō)明
指示
第一步是初始化客戶(hù)端
如果用戶(hù)沒(méi)有被授權
使用微博開(kāi)放平臺后臺提供的appkey、appsecret、callback_url初始化客戶(hù)端。
", "", "");">
var openAuth = new SinaWeiboClient("", "", "");
然后獲取授權頁(yè)面地址,訪(fǎng)問(wèn)授權地址,獲取Authorization_Code
var url = openAuth.GetAuthorizationUrl();
根據返回的Code兌換AccessToken
openAuth.GetAccessTokenByCode("[CODE]");
if(openAuth.IsAuthorized)
{
var accessToken = openAuth.AccessToken;
var uid = openAuth.UID;
}
重要的?。?!獲取到AccessToken和UID后,請保存這兩個(gè)數據,以后的接口調用會(huì )直接使用這兩個(gè)參數,所以不需要每次都執行第一步和第二步。
接下來(lái)就可以跳轉到第二步調用官方API了。
當然,如果你之前已經(jīng)被授權并且已經(jīng)獲得了AccessToken和UID,那么使用下面的方法來(lái)初始化客戶(hù)端。
", "", "", "");">
var openAuth = new SinaWeiboClient("", "", "", "");
之后就可以直接跳轉到第二步調用API了。
第二步調用接口
這里提供了Get和Post兩個(gè)方法調用官方API,也提供了異步支持。使用時(shí)根據官方文檔的要求選擇是使用Get還是Post調用API(調用方法在官方文檔中有明確說(shuō)明)。
調用接口傳遞參數有兩種方式。一個(gè)是傳入一個(gè)Dictionary類(lèi)型的參數組,一個(gè)是傳入一個(gè)名為new的匿名類(lèi)。我個(gè)人認為使用匿名類(lèi)是非??茖W(xué)的。
例如調用API獲取當前登錄用戶(hù)的最新微博
{{"count", 5},{"page", 1},{"base_app", 0}}); //這里可以使用字典或者匿名類(lèi)來(lái)傳遞參數,參數名,大小寫(xiě),參數順序和規范請參考官方api文檔 if (result.IsSuccessStatusCode){Console.WriteLine(result.Content.ReadAsStringAsync( ).結果);}">
var result = openAuth.HttpGet("statuses/friends_timeline.json",
new Dictionary
{
{"count", 5},
{"page", 1},
{"base_app" , 0}
}); //這里可以使用字典或者匿名類(lèi)的方式傳遞參數,參數名稱(chēng)、大小寫(xiě)、參數順序和規范請參照官方api文檔
if (result.IsSuccessStatusCode)
{
Console.WriteLine(result.Content.ReadAsStringAsync().Result);
}
另外,如果需要異步調用,請參考下面的例子。
對象的類(lèi)型也可以直接傳入匿名類(lèi)。參數對應官方api文檔中的參數 new {uid = openAuth.UID});response.ContinueWith(task =>{//asynchronous processing result});">
// 調用獲取獲取用戶(hù)信息api
// 參考:http://open.weibo.com/wiki/2/users/show
var response = openAuth.HttpGetAsync("users/show.json",
//可以傳入一個(gè)Dictionary類(lèi)型的對象,也可以直接傳入一個(gè)匿名類(lèi)。參數與官方api文檔中的參數相對應
new {
uid = openAuth.UID
});
response.ContinueWith(task =>{
//異步處理結果
});
如果使用.net4.5,可以直接使用async和await關(guān)鍵字來(lái)簡(jiǎn)化上述操作。
另外,由于新浪官方限制現在產(chǎn)生了登錄驗證碼,新版SDK不再提供之前版本的模擬登錄獲取授權(ClientLogin)。對于Winform和Console應用,可以參考NetDimension.OpenAuth.Winform類(lèi),該類(lèi)提供了擴展方法,可以在上述兩種項目類(lèi)型中彈出授權窗口,并在用戶(hù)授權后自動(dòng)獲取Authorization_Code。具體操作請參見(jiàn)Winform和Console示例代碼。
using NetDimension.OpenAuth.Winform;
...
var form = openAuth.GetAuthenticationForm();
if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Console.WriteLine("用戶(hù)授權成功!");
var accessToken = openAuth.AccessToken;
var uid = openAuth.UID;
//其他操作
//...
}
else
{
Console.WriteLine("用戶(hù)授權失??!");
}
執行上述代碼時(shí),會(huì )彈出下圖所示的窗口。
用戶(hù)登錄后,SDK 會(huì )使用正則表達式從回調地址中獲取 Authorization_Code。
關(guān)于源代碼中的例子
例子沒(méi)什么好說(shuō)的。源代碼中有三個(gè)示例。它們是一個(gè) MVC 網(wǎng)頁(yè)示例、兩個(gè)桌面控制臺和 WinForm 示例。
示例中,明文寫(xiě)了一組APPKey以及對應的Secret和回調地址。如果你不改變它,這個(gè)例子應該可以正常工作。如果改成自己的Key出現錯誤,請自行谷歌設置回調地址。
MVC 的示例設置稍微復雜一些。需要修改IIS Express的配置,使得網(wǎng)站可以通過(guò)127.0.0.1或192.16 8.0.100這樣的IP地址是可以訪(fǎng)問(wèn)的,否則在回調過(guò)程中無(wú)法訪(fǎng)問(wèn)。MVC示例的主頁(yè)上有修改教程。如果示例不起作用,請打開(kāi) Views\Home\Index.cshtml 查看是否已修改。
Winform 示例運行截圖
網(wǎng)站示例運行截圖
還有一點(diǎn)需要注意的是,如果你使用的是VS2015,IIS Express配置文件applicationhost.config的地址不再是“Documents\IIS Express\”,而是在項目地址下的.vs目錄下,這是一個(gè)隱藏目錄, 直接在地址欄中輸入路徑即可訪(fǎng)問(wèn)。
控制臺示例運行的屏幕截圖
有調用騰訊微博的例子,但是騰訊的要求很?chē)栏?。申請app需要網(wǎng)站驗證,因為我用的是朋友的網(wǎng)站,所以請有需要的朋友或者自己注冊app(騰訊微博開(kāi)發(fā)者平臺的api文檔服務(wù)器是不是掛了?反正,我提不起來(lái)。)另外,在騰訊的例子中,有一種在微博上發(fā)圖片的方法,嚴格按照騰訊api文檔寫(xiě)的,但是不能正常使用。如果有朋友知道原因,請告訴我們。騰訊的例子只是為了說(shuō)明新版SDK可以通過(guò)繼承方便的擴展到微信開(kāi)放平臺、人人網(wǎng)等其他平臺。請了解如何使用它。
示例代碼已收錄在源代碼中,具體請自行查閱代碼。
以上是新版本的全部?jì)热荨?br /> 正如開(kāi)頭所說(shuō),新浪微博覺(jué)得大勢已去,所以本次微博SDK不會(huì )更新新版本。本SDK第三版為最終版本,僅用于維護和BUG修正,不再添加或更新新內容。如果有繼續對新浪開(kāi)發(fā)平臺感興趣的朋友,請到GitHub上克隆代碼,根據需要擴展功能。
最后感謝QQ群里的所有朋友這幾年的支持和鼓勵,謝謝。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(WeiboSDK新浪微博SDKv3源碼和示例(圖))
WeiboSDK 新浪微博SDK v3 源代碼和示例前言
時(shí)間過(guò)得真快,距離上次SDK更新已經(jīng)3年多了。隨著(zhù)正式版的不斷更新,老SDK的部分接口已經(jīng)不能正常使用了。于是,QQ群里抱怨辱罵的朋友開(kāi)始增多。隨著(zhù)時(shí)代的發(fā)展,微博已經(jīng)被微信徹底甩掉,失去了興趣;同時(shí),對于我自己來(lái)說(shuō),在這個(gè)行業(yè)里為了生存而生存幾年后,日子越來(lái)越不好過(guò),我沒(méi)有時(shí)間。然后和新浪官方同步更新SDK,所以自13年之后,V2版本的SDK就沒(méi)有再更新了。雖然微博的風(fēng)潮沒(méi)了,但還是有很多朋友通過(guò)新浪開(kāi)放平臺頁(yè)面下載了我發(fā)布的SDK??梢哉f(shuō),由于長(cháng)期不更新,老版本嚴重誤導了新朋友。這也是我開(kāi)發(fā)的。SDK 新版本的另一個(gè)重要原因。SDK第三版的一些說(shuō)明
指示
第一步是初始化客戶(hù)端
如果用戶(hù)沒(méi)有被授權
使用微博開(kāi)放平臺后臺提供的appkey、appsecret、callback_url初始化客戶(hù)端。
", "", "");">
var openAuth = new SinaWeiboClient("", "", "");
然后獲取授權頁(yè)面地址,訪(fǎng)問(wèn)授權地址,獲取Authorization_Code
var url = openAuth.GetAuthorizationUrl();
根據返回的Code兌換AccessToken
openAuth.GetAccessTokenByCode("[CODE]");
if(openAuth.IsAuthorized)
{
var accessToken = openAuth.AccessToken;
var uid = openAuth.UID;
}
重要的?。?!獲取到AccessToken和UID后,請保存這兩個(gè)數據,以后的接口調用會(huì )直接使用這兩個(gè)參數,所以不需要每次都執行第一步和第二步。
接下來(lái)就可以跳轉到第二步調用官方API了。
當然,如果你之前已經(jīng)被授權并且已經(jīng)獲得了AccessToken和UID,那么使用下面的方法來(lái)初始化客戶(hù)端。
", "", "", "");">
var openAuth = new SinaWeiboClient("", "", "", "");
之后就可以直接跳轉到第二步調用API了。
第二步調用接口
這里提供了Get和Post兩個(gè)方法調用官方API,也提供了異步支持。使用時(shí)根據官方文檔的要求選擇是使用Get還是Post調用API(調用方法在官方文檔中有明確說(shuō)明)。
調用接口傳遞參數有兩種方式。一個(gè)是傳入一個(gè)Dictionary類(lèi)型的參數組,一個(gè)是傳入一個(gè)名為new的匿名類(lèi)。我個(gè)人認為使用匿名類(lèi)是非??茖W(xué)的。
例如調用API獲取當前登錄用戶(hù)的最新微博
{{"count", 5},{"page", 1},{"base_app", 0}}); //這里可以使用字典或者匿名類(lèi)來(lái)傳遞參數,參數名,大小寫(xiě),參數順序和規范請參考官方api文檔 if (result.IsSuccessStatusCode){Console.WriteLine(result.Content.ReadAsStringAsync( ).結果);}">
var result = openAuth.HttpGet("statuses/friends_timeline.json",
new Dictionary
{
{"count", 5},
{"page", 1},
{"base_app" , 0}
}); //這里可以使用字典或者匿名類(lèi)的方式傳遞參數,參數名稱(chēng)、大小寫(xiě)、參數順序和規范請參照官方api文檔
if (result.IsSuccessStatusCode)
{
Console.WriteLine(result.Content.ReadAsStringAsync().Result);
}
另外,如果需要異步調用,請參考下面的例子。
對象的類(lèi)型也可以直接傳入匿名類(lèi)。參數對應官方api文檔中的參數 new {uid = openAuth.UID});response.ContinueWith(task =>{//asynchronous processing result});">
// 調用獲取獲取用戶(hù)信息api
// 參考:http://open.weibo.com/wiki/2/users/show
var response = openAuth.HttpGetAsync("users/show.json",
//可以傳入一個(gè)Dictionary類(lèi)型的對象,也可以直接傳入一個(gè)匿名類(lèi)。參數與官方api文檔中的參數相對應
new {
uid = openAuth.UID
});
response.ContinueWith(task =>{
//異步處理結果
});
如果使用.net4.5,可以直接使用async和await關(guān)鍵字來(lái)簡(jiǎn)化上述操作。
另外,由于新浪官方限制現在產(chǎn)生了登錄驗證碼,新版SDK不再提供之前版本的模擬登錄獲取授權(ClientLogin)。對于Winform和Console應用,可以參考NetDimension.OpenAuth.Winform類(lèi),該類(lèi)提供了擴展方法,可以在上述兩種項目類(lèi)型中彈出授權窗口,并在用戶(hù)授權后自動(dòng)獲取Authorization_Code。具體操作請參見(jiàn)Winform和Console示例代碼。
using NetDimension.OpenAuth.Winform;
...
var form = openAuth.GetAuthenticationForm();
if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Console.WriteLine("用戶(hù)授權成功!");
var accessToken = openAuth.AccessToken;
var uid = openAuth.UID;
//其他操作
//...
}
else
{
Console.WriteLine("用戶(hù)授權失??!");
}
執行上述代碼時(shí),會(huì )彈出下圖所示的窗口。
用戶(hù)登錄后,SDK 會(huì )使用正則表達式從回調地址中獲取 Authorization_Code。
關(guān)于源代碼中的例子
例子沒(méi)什么好說(shuō)的。源代碼中有三個(gè)示例。它們是一個(gè) MVC 網(wǎng)頁(yè)示例、兩個(gè)桌面控制臺和 WinForm 示例。
示例中,明文寫(xiě)了一組APPKey以及對應的Secret和回調地址。如果你不改變它,這個(gè)例子應該可以正常工作。如果改成自己的Key出現錯誤,請自行谷歌設置回調地址。
MVC 的示例設置稍微復雜一些。需要修改IIS Express的配置,使得網(wǎng)站可以通過(guò)127.0.0.1或192.16 8.0.100這樣的IP地址是可以訪(fǎng)問(wèn)的,否則在回調過(guò)程中無(wú)法訪(fǎng)問(wèn)。MVC示例的主頁(yè)上有修改教程。如果示例不起作用,請打開(kāi) Views\Home\Index.cshtml 查看是否已修改。
Winform 示例運行截圖


網(wǎng)站示例運行截圖

還有一點(diǎn)需要注意的是,如果你使用的是VS2015,IIS Express配置文件applicationhost.config的地址不再是“Documents\IIS Express\”,而是在項目地址下的.vs目錄下,這是一個(gè)隱藏目錄, 直接在地址欄中輸入路徑即可訪(fǎng)問(wèn)。
控制臺示例運行的屏幕截圖

有調用騰訊微博的例子,但是騰訊的要求很?chē)栏?。申請app需要網(wǎng)站驗證,因為我用的是朋友的網(wǎng)站,所以請有需要的朋友或者自己注冊app(騰訊微博開(kāi)發(fā)者平臺的api文檔服務(wù)器是不是掛了?反正,我提不起來(lái)。)另外,在騰訊的例子中,有一種在微博上發(fā)圖片的方法,嚴格按照騰訊api文檔寫(xiě)的,但是不能正常使用。如果有朋友知道原因,請告訴我們。騰訊的例子只是為了說(shuō)明新版SDK可以通過(guò)繼承方便的擴展到微信開(kāi)放平臺、人人網(wǎng)等其他平臺。請了解如何使用它。
示例代碼已收錄在源代碼中,具體請自行查閱代碼。
以上是新版本的全部?jì)热荨?br /> 正如開(kāi)頭所說(shuō),新浪微博覺(jué)得大勢已去,所以本次微博SDK不會(huì )更新新版本。本SDK第三版為最終版本,僅用于維護和BUG修正,不再添加或更新新內容。如果有繼續對新浪開(kāi)發(fā)平臺感興趣的朋友,請到GitHub上克隆代碼,根據需要擴展功能。
最后感謝QQ群里的所有朋友這幾年的支持和鼓勵,謝謝。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(直播服務(wù)器端安裝及下載地址:PPVOD頻道的輸入與輸出寫(xiě)法)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 111 次瀏覽 ? 2021-10-17 17:33
應用場(chǎng)景:
某幼兒園需要將教室的攝像頭監控畫(huà)面廣播到互聯(lián)網(wǎng)上,家長(cháng)可以通過(guò)網(wǎng)絡(luò )直播了解孩子在校情況。
幼兒園安裝了某品牌的攝像頭,攝像頭的編碼為H264編碼,網(wǎng)絡(luò )攝像頭的訪(fǎng)問(wèn)地址為:rtsp://admin:[emailprotected]:554/h264/ch1/main/av_stream,其中可以通過(guò)VLC軟件查看地址的直播畫(huà)面。
網(wǎng)絡(luò )和硬件構建如下:
從上圖可以看出,一臺普通電腦和一套直播管理軟件就可以在幼兒園現場(chǎng)采集攝像機的RTSP地址,然后通過(guò)客戶(hù)端私有發(fā)送到網(wǎng)絡(luò )服務(wù)器的直播平臺。協(xié)議。一種觀(guān)看直播監控畫(huà)面的手機。
客戶(hù)端通道的輸入輸出寫(xiě)入
要使用私有協(xié)議,請在服務(wù)器端打開(kāi)端口 28002。輸入源寫(xiě)的是:client://client通道ID,寫(xiě)哪個(gè)通道字符串來(lái)接收哪個(gè)通道的流,輸出默認的HLS,并保存。
由于普通攝像頭不具備rtmp碼流的功能,需要使用直播軟件將獲取到的RTSP碼流推送到網(wǎng)絡(luò )服務(wù)器。PPVOD直播軟件不僅具有各種協(xié)議轉換功能,還能通過(guò)私有協(xié)議將流從本地推送到網(wǎng)絡(luò )。服務(wù)器。PPVOD直播軟件的客戶(hù)端私有協(xié)議傳輸安全性高,頻道識別隨機性強,隱蔽性好,不能被外界破解。它是流媒體的最佳選擇。
該方案成本低,無(wú)需特殊相機設置,應用范圍廣。目前,市場(chǎng)上90%以上的攝像機使用h264編碼,無(wú)需轉碼。如果攝像機的音頻不標準或者沒(méi)有音頻輸入,我們的直播平臺會(huì )做相應的處理,以滿(mǎn)足直播的需要。
如果攝像機端基于公網(wǎng)靜態(tài)IP環(huán)境,服務(wù)器端可以直接獲取攝像機的網(wǎng)絡(luò )rtsp地址作為輸入源,可以跳過(guò)在攝像機網(wǎng)絡(luò )安裝直播系統的步驟。
Live服務(wù)器端安裝下載地址:
PPVOD視頻點(diǎn)播系統下載地址:
PPVOD全能直播軟件下載地址: 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(直播服務(wù)器端安裝及下載地址:PPVOD頻道的輸入與輸出寫(xiě)法)
應用場(chǎng)景:
某幼兒園需要將教室的攝像頭監控畫(huà)面廣播到互聯(lián)網(wǎng)上,家長(cháng)可以通過(guò)網(wǎng)絡(luò )直播了解孩子在校情況。
幼兒園安裝了某品牌的攝像頭,攝像頭的編碼為H264編碼,網(wǎng)絡(luò )攝像頭的訪(fǎng)問(wèn)地址為:rtsp://admin:[emailprotected]:554/h264/ch1/main/av_stream,其中可以通過(guò)VLC軟件查看地址的直播畫(huà)面。
網(wǎng)絡(luò )和硬件構建如下:

從上圖可以看出,一臺普通電腦和一套直播管理軟件就可以在幼兒園現場(chǎng)采集攝像機的RTSP地址,然后通過(guò)客戶(hù)端私有發(fā)送到網(wǎng)絡(luò )服務(wù)器的直播平臺。協(xié)議。一種觀(guān)看直播監控畫(huà)面的手機。

客戶(hù)端通道的輸入輸出寫(xiě)入

要使用私有協(xié)議,請在服務(wù)器端打開(kāi)端口 28002。輸入源寫(xiě)的是:client://client通道ID,寫(xiě)哪個(gè)通道字符串來(lái)接收哪個(gè)通道的流,輸出默認的HLS,并保存。
由于普通攝像頭不具備rtmp碼流的功能,需要使用直播軟件將獲取到的RTSP碼流推送到網(wǎng)絡(luò )服務(wù)器。PPVOD直播軟件不僅具有各種協(xié)議轉換功能,還能通過(guò)私有協(xié)議將流從本地推送到網(wǎng)絡(luò )。服務(wù)器。PPVOD直播軟件的客戶(hù)端私有協(xié)議傳輸安全性高,頻道識別隨機性強,隱蔽性好,不能被外界破解。它是流媒體的最佳選擇。
該方案成本低,無(wú)需特殊相機設置,應用范圍廣。目前,市場(chǎng)上90%以上的攝像機使用h264編碼,無(wú)需轉碼。如果攝像機的音頻不標準或者沒(méi)有音頻輸入,我們的直播平臺會(huì )做相應的處理,以滿(mǎn)足直播的需要。
如果攝像機端基于公網(wǎng)靜態(tài)IP環(huán)境,服務(wù)器端可以直接獲取攝像機的網(wǎng)絡(luò )rtsp地址作為輸入源,可以跳過(guò)在攝像機網(wǎng)絡(luò )安裝直播系統的步驟。
Live服務(wù)器端安裝下載地址:
PPVOD視頻點(diǎn)播系統下載地址:
PPVOD全能直播軟件下載地址:
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(歷時(shí)三天,新浪微博APP分享是未審核的應用了 )
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 92 次瀏覽 ? 2021-10-17 16:14
)
新浪微博開(kāi)放平臺申請已通過(guò)審核,歷時(shí)三天??磥?lái)這沒(méi)什么,還是寫(xiě)下來(lái)分享一下吧。下次共享不再是未經(jīng)審查的應用程序。這個(gè)新浪APP。. . . 申請的時(shí)候還以為不會(huì )通過(guò),因為我的域名沒(méi)有注冊。就像百度聯(lián)盟一樣,如果是真的就好了。新浪微博APP功能及性能:2.1個(gè)崩潰的應用程序將被拒絕;2.2個(gè)有錯誤的應用將被拒絕;2.3 不匹配開(kāi)發(fā)者的推廣應用將被拒絕;2.4 沒(méi)有申請文件或隱藏功能與描述不符的應用將被拒絕;2.5 使用非公開(kāi) API 的應用將被拒絕;2. 6 在指定容器外讀寫(xiě)數據的應用將被拒絕;2.7 以任何方式或形式下載代碼的應用將被拒絕;2.8 安裝或發(fā)布其他可執行代碼2.9 演示版、試用版和測試版的申請將被拒絕;2.10個(gè)與新浪微博開(kāi)放平臺現有申請重復的申請可能會(huì )被拒絕,尤其是數量大的時(shí)候;2.11個(gè)沒(méi)有明顯目的或提供任何持久娛樂(lè )價(jià)值的應用程序可能會(huì )被拒絕;2.12個(gè)主要內容為營(yíng)銷(xiāo)或廣告的應用程序將被拒絕;2.13個(gè)欺騙性或虛假功能,未明確標記的應用程序將被拒絕;2. 14 互聯(lián)網(wǎng)瀏覽應用必須使用新浪微博開(kāi)放平臺提供的網(wǎng)頁(yè)框架;2.15 提供 診斷錯誤或其他不準確數據的申請將被拒絕;2.16 將大量類(lèi)似版本應用上傳至新浪微博開(kāi)放平臺的開(kāi)發(fā)者將被移除開(kāi)發(fā)者項目;2.17個(gè)使用非法文件共享的應用將被拒絕;2.18個(gè)旨在用作非法賭博輔助工具(包括算牌)的應用程序將被拒絕;2. 19 具有匿名或惡作劇功能或發(fā)送類(lèi)似短信/彩信功能的應用程序將被拒絕;2.20名開(kāi)發(fā)者開(kāi)發(fā)秘密采集用戶(hù)密碼或用戶(hù)隱私數據的應用程序將從新浪微博開(kāi)放平臺下架;2. 21 應用程序中不允許彈出窗口;2.22 申請內容訪(fǎng)問(wèn)速度過(guò)慢,內容響應速度平均超過(guò)6秒,會(huì )被拒絕。最后,上圖:
查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(歷時(shí)三天,新浪微博APP分享是未審核的應用了
)
新浪微博開(kāi)放平臺申請已通過(guò)審核,歷時(shí)三天??磥?lái)這沒(méi)什么,還是寫(xiě)下來(lái)分享一下吧。下次共享不再是未經(jīng)審查的應用程序。這個(gè)新浪APP。. . . 申請的時(shí)候還以為不會(huì )通過(guò),因為我的域名沒(méi)有注冊。就像百度聯(lián)盟一樣,如果是真的就好了。新浪微博APP功能及性能:2.1個(gè)崩潰的應用程序將被拒絕;2.2個(gè)有錯誤的應用將被拒絕;2.3 不匹配開(kāi)發(fā)者的推廣應用將被拒絕;2.4 沒(méi)有申請文件或隱藏功能與描述不符的應用將被拒絕;2.5 使用非公開(kāi) API 的應用將被拒絕;2. 6 在指定容器外讀寫(xiě)數據的應用將被拒絕;2.7 以任何方式或形式下載代碼的應用將被拒絕;2.8 安裝或發(fā)布其他可執行代碼2.9 演示版、試用版和測試版的申請將被拒絕;2.10個(gè)與新浪微博開(kāi)放平臺現有申請重復的申請可能會(huì )被拒絕,尤其是數量大的時(shí)候;2.11個(gè)沒(méi)有明顯目的或提供任何持久娛樂(lè )價(jià)值的應用程序可能會(huì )被拒絕;2.12個(gè)主要內容為營(yíng)銷(xiāo)或廣告的應用程序將被拒絕;2.13個(gè)欺騙性或虛假功能,未明確標記的應用程序將被拒絕;2. 14 互聯(lián)網(wǎng)瀏覽應用必須使用新浪微博開(kāi)放平臺提供的網(wǎng)頁(yè)框架;2.15 提供 診斷錯誤或其他不準確數據的申請將被拒絕;2.16 將大量類(lèi)似版本應用上傳至新浪微博開(kāi)放平臺的開(kāi)發(fā)者將被移除開(kāi)發(fā)者項目;2.17個(gè)使用非法文件共享的應用將被拒絕;2.18個(gè)旨在用作非法賭博輔助工具(包括算牌)的應用程序將被拒絕;2. 19 具有匿名或惡作劇功能或發(fā)送類(lèi)似短信/彩信功能的應用程序將被拒絕;2.20名開(kāi)發(fā)者開(kāi)發(fā)秘密采集用戶(hù)密碼或用戶(hù)隱私數據的應用程序將從新浪微博開(kāi)放平臺下架;2. 21 應用程序中不允許彈出窗口;2.22 申請內容訪(fǎng)問(wèn)速度過(guò)慢,內容響應速度平均超過(guò)6秒,會(huì )被拒絕。最后,上圖:



使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(獲得新浪微博AccessToken的步驟是怎樣的?(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 86 次瀏覽 ? 2021-10-17 04:02
獲得新浪微博AccessToken的步驟是這樣的
參考:%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E
1.首先讓用戶(hù)授權你的APP獲取代碼
例如:點(diǎn)擊下方鏈接授權后,在url上會(huì )得到一個(gè)code參數
://
2.將此代碼發(fā)送到服務(wù)器接口。服務(wù)端收到代碼后,執行下載文件中的代碼返回AccessToken(或直接從服務(wù)端獲取Token,執行微博API的各種操作)
代碼示例:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.weibo.com/oauth2/access_token");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded;";
request.Headers.Add(string.Format("Authorization: key={0}", "123456"));
string postData = "client_id=123456";
postData += ("&client_secret=123456");
postData += ("&grant_type=authorization_code");
postData += ("&redirect_uri=http://www.cfxixi.com");
postData += ("&code=123456");
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
//發(fā)出Request
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string responseStr = reader.ReadToEnd();
reader.Close();
responseStream.Close();
response.Close();
Demo下載可以到我的Q群分享下載250395324 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(獲得新浪微博AccessToken的步驟是怎樣的?(圖))
獲得新浪微博AccessToken的步驟是這樣的
參考:%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E6%98%8E

1.首先讓用戶(hù)授權你的APP獲取代碼
例如:點(diǎn)擊下方鏈接授權后,在url上會(huì )得到一個(gè)code參數
://
2.將此代碼發(fā)送到服務(wù)器接口。服務(wù)端收到代碼后,執行下載文件中的代碼返回AccessToken(或直接從服務(wù)端獲取Token,執行微博API的各種操作)
代碼示例:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://api.weibo.com/oauth2/access_token");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded;";
request.Headers.Add(string.Format("Authorization: key={0}", "123456"));
string postData = "client_id=123456";
postData += ("&client_secret=123456");
postData += ("&grant_type=authorization_code");
postData += ("&redirect_uri=http://www.cfxixi.com");
postData += ("&code=123456");
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
//發(fā)出Request
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
string responseStr = reader.ReadToEnd();
reader.Close();
responseStream.Close();
response.Close();
Demo下載可以到我的Q群分享下載250395324
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺文章同步到新浪微博的幾種方法(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 65 次瀏覽 ? 2021-10-16 16:27
.
WordPress文章同步新浪微博的幾種方式
相信現在很多網(wǎng)友都用過(guò)微博了,微博也挺火的!在使用WordPress的博主中,使用微博的人數可能更多,因為博客圈里有一種觀(guān)點(diǎn):微博是一個(gè)很好的推廣平臺。新浪微博是比較流行的一種。也許你聽(tīng)說(shuō)過(guò)如何將WordPress 文章 同步發(fā)布到新浪微博,但我在這里不得不啰嗦一下。它可能與您之前看到的有所不同。. 插件的方法我就不介紹了,大家需要上網(wǎng)搜一下。
方法一:關(guān)聯(lián)博客。方法一其實(shí)很簡(jiǎn)單。您可以直接使用新浪微博的關(guān)聯(lián)博客功能。使用方法:點(diǎn)擊新浪微博右上角的“工具”菜單,然后點(diǎn)擊“關(guān)聯(lián)博客”填寫(xiě)你的博客鏈接!這樣,你的博客每更新一次文章,就會(huì )同時(shí)發(fā)送一條格式如下的微博到新浪微博:文章Title + 文章 URL 方式二:微博開(kāi)放平臺界面
方法一只能以文章標題+文章 URL的形式同步到新浪微博,微博內容無(wú)法自定義。使用新浪微博的開(kāi)放平臺界面可以大大增加自由度,但是需要寫(xiě)一些代碼,其實(shí)很簡(jiǎn)單,復制粘貼代碼即可。打開(kāi)你的當前
使用主題目錄下的functions.php,復制以下代碼到第一個(gè) 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺文章同步到新浪微博的幾種方法(圖))
.
WordPress文章同步新浪微博的幾種方式
相信現在很多網(wǎng)友都用過(guò)微博了,微博也挺火的!在使用WordPress的博主中,使用微博的人數可能更多,因為博客圈里有一種觀(guān)點(diǎn):微博是一個(gè)很好的推廣平臺。新浪微博是比較流行的一種。也許你聽(tīng)說(shuō)過(guò)如何將WordPress 文章 同步發(fā)布到新浪微博,但我在這里不得不啰嗦一下。它可能與您之前看到的有所不同。. 插件的方法我就不介紹了,大家需要上網(wǎng)搜一下。
方法一:關(guān)聯(lián)博客。方法一其實(shí)很簡(jiǎn)單。您可以直接使用新浪微博的關(guān)聯(lián)博客功能。使用方法:點(diǎn)擊新浪微博右上角的“工具”菜單,然后點(diǎn)擊“關(guān)聯(lián)博客”填寫(xiě)你的博客鏈接!這樣,你的博客每更新一次文章,就會(huì )同時(shí)發(fā)送一條格式如下的微博到新浪微博:文章Title + 文章 URL 方式二:微博開(kāi)放平臺界面
方法一只能以文章標題+文章 URL的形式同步到新浪微博,微博內容無(wú)法自定義。使用新浪微博的開(kāi)放平臺界面可以大大增加自由度,但是需要寫(xiě)一些代碼,其實(shí)很簡(jiǎn)單,復制粘貼代碼即可。打開(kāi)你的當前
使用主題目錄下的functions.php,復制以下代碼到第一個(gè)
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博:山寨版的twitter,各種粉絲的登錄邏輯)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 239 次瀏覽 ? 2021-10-14 18:32
新浪微博:盜版推特,各種粉絲的集散地,天朝國人的最?lèi)?ài),基本上所有網(wǎng)友都有微博賬號,所以使用新浪微博賬號進(jìn)行三向登錄就顯得尤為重要改善用戶(hù)登錄體驗。這次我用Python3+Tornado5集成了微博登錄,記錄一下,還是有很多坑。
首先注冊微博開(kāi)放平臺:
選擇微鏈接-》網(wǎng)站訪(fǎng)問(wèn)=>立即訪(fǎng)問(wèn)創(chuàng )建新應用
應用創(chuàng )建成功后,會(huì )立即跳轉到審核頁(yè)面。您需要填寫(xiě)一些資格進(jìn)行審核。其實(shí)這些review的領(lǐng)域是不需要打理的,申請完全不需要通過(guò)review
直接拿到appkey和appsecret,然后馬上點(diǎn)擊高級信息填寫(xiě)回調URL
需要注意的是,回調授權和取消回調授權地址需要一致
那么新浪微博的登錄邏輯就很簡(jiǎn)單了:拼接url=>回調獲取code=>uid和access_token交換code=>使用access_token獲取用戶(hù)信息
首先第一步是拼接url,這里我們使用Tornado來(lái)編寫(xiě)控制器
#新浪微博登錄地址組合返回(第一步)
class SinaFirstHandler(BaseHandler):
def get(self,*args,**kwargs):
#微博接口地址
weibo_auth_url = "https://api.weibo.com/oauth2/authorize"
#回調網(wǎng)址
redirect_url = "http://127.0.0.1:8000/md_admin/weibo"
#應用id
client_id = "2636039333"
#組合url
auth_url = weibo_auth_url + "?client_id={client_id}&redirect_uri={re_url}".format(client_id=client_id,
re_url=redirect_url)
self.write(auth_url)
第二步,回調獲取code,交換access_token和uid
#新浪微博回調地址(第二步)
class SinaBackHandler(BaseHandler):
def get(self,*args,**kwargs):
#獲取回調的code
code = self.get_argument('code')
#微博認證地址
access_token_url = "https://api.weibo.com/oauth2/access_token"
#參數 向新浪接口發(fā)送請求
re_dict = requests.post(access_token_url,data={
"client_id": '2636039333',
"client_secret": "4e2fbdb39432c31dc5c2f90be3afa5ce",
"grant_type": "authorization_code",
"code": code,
"redirect_uri": "http://127.0.0.1:8000/md_admin/weibo",
})
re_dict = re_dict.text
re_dict = eval(re_dict)
print(re_dict.get('uid'))
self.write(re_dict)
接下來(lái)的情況就有點(diǎn)亂了,因為新浪規定,如果申請沒(méi)有通過(guò)審核,那么部分新浪接口是沒(méi)有權限請求的??梢哉f(shuō),你手上只有access_token和uid,其他的也改不了。我該怎么辦,沒(méi)有人會(huì )免費拿到營(yíng)業(yè)執照來(lái)測試接口,但是有一個(gè)曲線(xiàn)救國,就是在測試信息頁(yè)面上添加一個(gè)測試帳戶(hù)。添加測試賬號后,就可以請求相應的接口了。
最后使用你手上的access_token和uid獲取當前用戶(hù)的用戶(hù)名
result = requests.get('https://api.weibo.com/2/users/show.json',params={'access_token':res['access_token'],'uid':res['uid']})
result = json.loads(result.text)
print(result['name'])
可以看到接口請求成功
完成它。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博:山寨版的twitter,各種粉絲的登錄邏輯)
新浪微博:盜版推特,各種粉絲的集散地,天朝國人的最?lèi)?ài),基本上所有網(wǎng)友都有微博賬號,所以使用新浪微博賬號進(jìn)行三向登錄就顯得尤為重要改善用戶(hù)登錄體驗。這次我用Python3+Tornado5集成了微博登錄,記錄一下,還是有很多坑。
首先注冊微博開(kāi)放平臺:
選擇微鏈接-》網(wǎng)站訪(fǎng)問(wèn)=>立即訪(fǎng)問(wèn)創(chuàng )建新應用

應用創(chuàng )建成功后,會(huì )立即跳轉到審核頁(yè)面。您需要填寫(xiě)一些資格進(jìn)行審核。其實(shí)這些review的領(lǐng)域是不需要打理的,申請完全不需要通過(guò)review

直接拿到appkey和appsecret,然后馬上點(diǎn)擊高級信息填寫(xiě)回調URL

需要注意的是,回調授權和取消回調授權地址需要一致
那么新浪微博的登錄邏輯就很簡(jiǎn)單了:拼接url=>回調獲取code=>uid和access_token交換code=>使用access_token獲取用戶(hù)信息
首先第一步是拼接url,這里我們使用Tornado來(lái)編寫(xiě)控制器
#新浪微博登錄地址組合返回(第一步)
class SinaFirstHandler(BaseHandler):
def get(self,*args,**kwargs):
#微博接口地址
weibo_auth_url = "https://api.weibo.com/oauth2/authorize"
#回調網(wǎng)址
redirect_url = "http://127.0.0.1:8000/md_admin/weibo"
#應用id
client_id = "2636039333"
#組合url
auth_url = weibo_auth_url + "?client_id={client_id}&redirect_uri={re_url}".format(client_id=client_id,
re_url=redirect_url)
self.write(auth_url)
第二步,回調獲取code,交換access_token和uid
#新浪微博回調地址(第二步)
class SinaBackHandler(BaseHandler):
def get(self,*args,**kwargs):
#獲取回調的code
code = self.get_argument('code')
#微博認證地址
access_token_url = "https://api.weibo.com/oauth2/access_token"
#參數 向新浪接口發(fā)送請求
re_dict = requests.post(access_token_url,data={
"client_id": '2636039333',
"client_secret": "4e2fbdb39432c31dc5c2f90be3afa5ce",
"grant_type": "authorization_code",
"code": code,
"redirect_uri": "http://127.0.0.1:8000/md_admin/weibo",
})
re_dict = re_dict.text
re_dict = eval(re_dict)
print(re_dict.get('uid'))
self.write(re_dict)
接下來(lái)的情況就有點(diǎn)亂了,因為新浪規定,如果申請沒(méi)有通過(guò)審核,那么部分新浪接口是沒(méi)有權限請求的??梢哉f(shuō),你手上只有access_token和uid,其他的也改不了。我該怎么辦,沒(méi)有人會(huì )免費拿到營(yíng)業(yè)執照來(lái)測試接口,但是有一個(gè)曲線(xiàn)救國,就是在測試信息頁(yè)面上添加一個(gè)測試帳戶(hù)。添加測試賬號后,就可以請求相應的接口了。

最后使用你手上的access_token和uid獲取當前用戶(hù)的用戶(hù)名
result = requests.get('https://api.weibo.com/2/users/show.json',params={'access_token':res['access_token'],'uid':res['uid']})
result = json.loads(result.text)
print(result['name'])
可以看到接口請求成功

完成它。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(我要開(kāi)發(fā)一個(gè)基于sina微博開(kāi)放平臺的應用(App)(組圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 72 次瀏覽 ? 2021-10-14 18:31
本文文章主要介紹使用Java驗證通過(guò)OAuth協(xié)議發(fā)送微博的教程。它使用新浪微博為Java開(kāi)放的API weibo4j。有需要的朋友可以參考
新浪微博開(kāi)放平臺雖然提供了各種語(yǔ)言的開(kāi)發(fā)SDK下載,但也有基本接口調用的demo和接口說(shuō)明文檔。但是經(jīng)過(guò)這幾天的耐心嘗試,感覺(jué)新浪微博開(kāi)放平臺上的入門(mén)指南與下載的Java開(kāi)發(fā)包weibo4j包中的demo使用注釋有些不一致。再加上自我理解能力有限,導致了很多困惑。幸運的是,我并沒(méi)有放棄嘗試去理解它。廢話(huà)少說(shuō),以下是我的學(xué)習過(guò)程。
如果你想通過(guò)調用新浪微博開(kāi)放平臺API開(kāi)發(fā)自己的微博應用,首先要有一個(gè)新浪微博賬號和一個(gè)CSDN賬號,因為我們需要同時(shí)用這兩個(gè)賬號創(chuàng )建一個(gè)微博應用獲取App key和Secret key。App key和Secret key有什么用?
其實(shí)我只是看了新浪微博開(kāi)放平臺上的一系列解釋?zhuān)⒉皇呛芰私釧pp key和Secret key的使用。因為更重要的是了解OAuth認證授權的整個(gè)過(guò)程,以及幾個(gè)Token和4個(gè)URL在整個(gè)OAuth認證授權過(guò)程中的作用。
當我第一次遇到完全沒(méi)有概念的 OAuth 時(shí),我認為它是不可能學(xué)習的。幸好找到了下面的文章,對理解OAuth很有幫助。鏈接如下:
OAuth 有 3 個(gè)參與者,分別是 User、Service Provider 和 Consumer。假設我想開(kāi)發(fā)一個(gè)基于新浪微博開(kāi)放平臺的應用(App),供其他新浪微博用戶(hù)使用。它們的對應關(guān)系如下:
實(shí)際上,我們的App相當于User和Provider(新浪微博平臺)的第三方應用。作為第三方App,如果要訪(fǎng)問(wèn)用戶(hù)在新浪微博平臺上保存的資源,必須經(jīng)過(guò)一系列的認證和授權才能工作。
下面是根據我對整個(gè)OAuth認證和授權流程的理解繪制的圖(可以跳過(guò),對以下一些概念有一定了解后再回頭看這個(gè)流程圖):
結合上面的流程圖,下面是我對這些術(shù)語(yǔ)的理解以及對各個(gè)過(guò)程的描述:
消費者秘鑰和消費者秘鑰:在新浪微博開(kāi)放平臺上分別稱(chēng)為App秘鑰和秘鑰。消費者向提供者申請,希望能夠調用其開(kāi)放的API。申請通過(guò)后,Provider將其分配給滿(mǎn)足其要求的Consumer,以唯一標識該Consumer滿(mǎn)足Provider的要求。
對應上圖中的流程1和流程2。
Request Token、Request Secret:當用戶(hù)訪(fǎng)問(wèn)Consumer,希望獲得其特殊服務(wù)時(shí),該服務(wù)在整合了Provider中存儲的用戶(hù)自己的資源后由Consumer返回。此時(shí),Consumer向Provider請求獲取Requst Token,用于唯一標識Consumer和User之間的具體關(guān)聯(lián)。
對應上圖中的過(guò)程3、4、5。
要處理 6,消費者必須將用戶(hù)引導至提供者提供的 OAuth 身份驗證和授權頁(yè)面。事實(shí)上,瀏覽器被重定向到帶有請求令牌和請求秘密參數的 authenticationURL。URL 由提供商提供。
接下來(lái),User在流程7和流程8中授權Consumer(一般是通過(guò)輸入賬號和密碼登錄),Provider會(huì )被重定向到流程1Consumer提供的Callback_URL,URL參數附加OAuth Token和 OAuth 驗證程序。
流程9是Consumer使用之前從Provider獲取的Request Token再次向Provider請求獲取Access Token。
Access Token,Access Secret:如果流程10中的Provider返回一個(gè)未經(jīng)User授權的Access Token,用于唯一標識特定Consumer可以訪(fǎng)問(wèn)用戶(hù)在Provider中存儲的資源和信息。然后Consumer就可以開(kāi)始使用獲取到的Access Token和Access Secret來(lái)訪(fǎng)問(wèn)相應User存儲在Provider中的資源了。
在流程11中對用戶(hù)信息進(jìn)行整合操作后,即可將具體的服務(wù)結果返回給用戶(hù)。
通過(guò)以上對OAuth流程的了解,我們知道,實(shí)際上User并沒(méi)有向第三方Consumer透露登錄Provider所需的賬號和密碼。同時(shí),用戶(hù)可以使用消費者的特殊服務(wù)。多么巧妙而安全的操作過(guò)程!
此外,在上圖中,Consumer 向 Provider 發(fā)出了 3 個(gè)不同的請求。實(shí)際上,Provider 提供了 3 個(gè)不同功能的 URL 供 Consumer 訪(fǎng)問(wèn)。這3個(gè)網(wǎng)址在新浪微博開(kāi)放平臺的截圖如下:
新浪微博開(kāi)放平臺使用OAuth驗證并發(fā)布微博
使用新浪微博開(kāi)放平臺的API,首先需要獲取新浪分配的App key和App Secret。下面是我創(chuàng )建應用后新浪分配的App key和App Secret(這個(gè)要保密)。
然后下載微博SDK,我用的是Java的weibo4j。
將SDK包中的weibo.java類(lèi)的App Key和App Secret修改為剛剛獲取的App Key和App Secret,如下圖使用說(shuō)明所示:
完成這些之后,就可以根據提供的Demo開(kāi)始編寫(xiě)代碼了。如下:
WebOAuth.java用于初始化Weibo.java類(lèi)所需的App Key和App Secret,并提供getRequestToken()和gettAccessToken()方法獲取Request Token和Access Token。所需參數如代碼所示。此外,還提供了發(fā)布文本微博的update()方法。
package weibo4j.examples; import weibo4j.Status; import weibo4j.Weibo; import weibo4j.WeiboException; import weibo4j.http.AccessToken; import weibo4j.http.RequestToken; import java.io.UnsupportedEncodingException; // Web 方式認證 public class WebOAuth { private Weibo weibo; public WebOAuth(){ // 準備好Consumer Key、Consumer Secret // 對應于新浪微博應用就是申請到的 App key 和 Secret key System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY); System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET); weibo = new Weibo(); } // 根據傳入的 callback_url 獲取 request token public RequestToken getRequestToken(String backUrl) { try { // 指定 callback_url 并獲得 request token RequestToken requestToken = weibo.getOAuthRequestToken(backUrl); System.out.println("Request token: " + requestToken.getToken()); System.out.println("Request token secret: " + requestToken.getTokenSecret()); return requestToken; } catch (Exception e) { System.out.println("獲取Request token發(fā)生異常!"); e.printStackTrace(); return null; } } // 根據傳入的 request token 和 verifier 獲取 access token public AccessToken gettAccessToken(RequestToken requestToken, String verifier) { try { AccessToken accessToken = weibo.getOAuthAccessToken(requestToken .getToken(), requestToken.getTokenSecret(), verifier); System.out.println("Access token: " + accessToken.getToken()); System.out.println("Access token secret: " + accessToken.getTokenSecret()); return accessToken; } catch (Exception e) { System.out.println("獲取Access token發(fā)生異常!"); e.printStackTrace(); return null; } } // 根據傳入的 Access Token 和內容發(fā)表微博 public void update(AccessToken access, String content) { try { weibo.setToken(access.getToken(), access.getTokenSecret()); content = new String(content.getBytes("GBK"), "UTF-8"); Status status = weibo.updateStatus(content); System.out.println("成功發(fā)表微博:" + status.getText() + "."); } catch (UnsupportedEncodingException e) { System.out.println("微博內容轉編碼發(fā)生異常!"); e.printStackTrace(); } catch (WeiboException e) { System.out.println("發(fā)表微博發(fā)生異常!"); e.printStackTrace(); } } } request.jsp,用于提供 callback_url(這里我們自定義為下文中的callback.jsp),當獲取得到RequestToken之后,保存該RequestToken到Session中,并將頁(yè)面重定向到callback.jsp進(jìn)行驗證、授權。 請點(diǎn)擊進(jìn)行Web方式的OAuth認證!
callback.jsp,在上一步重定向之后,oauth_verifier 參數會(huì )附加到callback_url。這時(shí)候我們根據Session中存儲的RequestToken和獲取到的oauth_verifier參數來(lái)申請AccessToken。獲取到AccessToken后,我們將頁(yè)面重定向到writeWeibo.html頁(yè)面,用于寫(xiě)微博。
writeWeibo.html,很簡(jiǎn)單的HTML文件。 發(fā)布sina微博 請在這里寫(xiě)上140字符以?xún)鹊奈谋荆?lt;/br>測試新浪微博!</br></br> updateWeibo.jsp,用于發(fā)表文本微博,即調用WebOAuth.java 中的update方法。
在運行之前,我們要準備好Tomcat,把上面的源文件放到正確的目錄下。另外,SDK包中收錄的commons-httpclient-3.1.jar包也要添加到\WEB-INF\lib目錄下,以及weibo4j.jar(里面是具體的新浪微博開(kāi)放平臺中的Java實(shí)現)。
運行Tomcat,在瀏覽器中訪(fǎng)問(wèn)request.jsp頁(yè)面,如下圖:
點(diǎn)擊鏈接,如下圖(注意地址欄的變化):
地址欄的網(wǎng)址如下:
://localhost:8080/sinaweibo/callback.jsp
填寫(xiě)具體有效的新浪微博賬號、密碼并授權。以下是我用來(lái)測試授權的微博賬號的填寫(xiě)結果:
地址欄的網(wǎng)址如下:
:8080/sinaweibo/writeWeibo.html
點(diǎn)擊“發(fā)布”,如下圖:
登錄微博查看,如下圖:
查看賬戶(hù)授權的應用列表:
到目前為止,關(guān)于 OAuth
使用新浪微博開(kāi)放平臺發(fā)布微博的方式大概就是這個(gè)過(guò)程。
概括:
1、 其實(shí)還有很多細節沒(méi)說(shuō)到。我試了很多次才發(fā)現問(wèn)題,理解問(wèn)題,然后解決問(wèn)題。
2、 如果我們登錄新浪微博的賬號信息cookie已經(jīng)保存在瀏覽器中,那么授權時(shí)就不需要輸入賬號信息了,當然不用當前賬號也可以修改用于授權;
3、 控制臺中也有一些輸入的信息,比如Token、URL、服務(wù)器返回信息等,截圖中沒(méi)有顯示。
以上就是使用Java驗證OAuth協(xié)議發(fā)送微博的教程的詳細內容。更多詳情請關(guān)注其他相關(guān)html中文網(wǎng)站文章! 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(我要開(kāi)發(fā)一個(gè)基于sina微博開(kāi)放平臺的應用(App)(組圖))
本文文章主要介紹使用Java驗證通過(guò)OAuth協(xié)議發(fā)送微博的教程。它使用新浪微博為Java開(kāi)放的API weibo4j。有需要的朋友可以參考
新浪微博開(kāi)放平臺雖然提供了各種語(yǔ)言的開(kāi)發(fā)SDK下載,但也有基本接口調用的demo和接口說(shuō)明文檔。但是經(jīng)過(guò)這幾天的耐心嘗試,感覺(jué)新浪微博開(kāi)放平臺上的入門(mén)指南與下載的Java開(kāi)發(fā)包weibo4j包中的demo使用注釋有些不一致。再加上自我理解能力有限,導致了很多困惑。幸運的是,我并沒(méi)有放棄嘗試去理解它。廢話(huà)少說(shuō),以下是我的學(xué)習過(guò)程。
如果你想通過(guò)調用新浪微博開(kāi)放平臺API開(kāi)發(fā)自己的微博應用,首先要有一個(gè)新浪微博賬號和一個(gè)CSDN賬號,因為我們需要同時(shí)用這兩個(gè)賬號創(chuàng )建一個(gè)微博應用獲取App key和Secret key。App key和Secret key有什么用?
其實(shí)我只是看了新浪微博開(kāi)放平臺上的一系列解釋?zhuān)⒉皇呛芰私釧pp key和Secret key的使用。因為更重要的是了解OAuth認證授權的整個(gè)過(guò)程,以及幾個(gè)Token和4個(gè)URL在整個(gè)OAuth認證授權過(guò)程中的作用。
當我第一次遇到完全沒(méi)有概念的 OAuth 時(shí),我認為它是不可能學(xué)習的。幸好找到了下面的文章,對理解OAuth很有幫助。鏈接如下:
OAuth 有 3 個(gè)參與者,分別是 User、Service Provider 和 Consumer。假設我想開(kāi)發(fā)一個(gè)基于新浪微博開(kāi)放平臺的應用(App),供其他新浪微博用戶(hù)使用。它們的對應關(guān)系如下:
實(shí)際上,我們的App相當于User和Provider(新浪微博平臺)的第三方應用。作為第三方App,如果要訪(fǎng)問(wèn)用戶(hù)在新浪微博平臺上保存的資源,必須經(jīng)過(guò)一系列的認證和授權才能工作。
下面是根據我對整個(gè)OAuth認證和授權流程的理解繪制的圖(可以跳過(guò),對以下一些概念有一定了解后再回頭看這個(gè)流程圖):

結合上面的流程圖,下面是我對這些術(shù)語(yǔ)的理解以及對各個(gè)過(guò)程的描述:
消費者秘鑰和消費者秘鑰:在新浪微博開(kāi)放平臺上分別稱(chēng)為App秘鑰和秘鑰。消費者向提供者申請,希望能夠調用其開(kāi)放的API。申請通過(guò)后,Provider將其分配給滿(mǎn)足其要求的Consumer,以唯一標識該Consumer滿(mǎn)足Provider的要求。
對應上圖中的流程1和流程2。
Request Token、Request Secret:當用戶(hù)訪(fǎng)問(wèn)Consumer,希望獲得其特殊服務(wù)時(shí),該服務(wù)在整合了Provider中存儲的用戶(hù)自己的資源后由Consumer返回。此時(shí),Consumer向Provider請求獲取Requst Token,用于唯一標識Consumer和User之間的具體關(guān)聯(lián)。
對應上圖中的過(guò)程3、4、5。
要處理 6,消費者必須將用戶(hù)引導至提供者提供的 OAuth 身份驗證和授權頁(yè)面。事實(shí)上,瀏覽器被重定向到帶有請求令牌和請求秘密參數的 authenticationURL。URL 由提供商提供。
接下來(lái),User在流程7和流程8中授權Consumer(一般是通過(guò)輸入賬號和密碼登錄),Provider會(huì )被重定向到流程1Consumer提供的Callback_URL,URL參數附加OAuth Token和 OAuth 驗證程序。
流程9是Consumer使用之前從Provider獲取的Request Token再次向Provider請求獲取Access Token。
Access Token,Access Secret:如果流程10中的Provider返回一個(gè)未經(jīng)User授權的Access Token,用于唯一標識特定Consumer可以訪(fǎng)問(wèn)用戶(hù)在Provider中存儲的資源和信息。然后Consumer就可以開(kāi)始使用獲取到的Access Token和Access Secret來(lái)訪(fǎng)問(wèn)相應User存儲在Provider中的資源了。
在流程11中對用戶(hù)信息進(jìn)行整合操作后,即可將具體的服務(wù)結果返回給用戶(hù)。
通過(guò)以上對OAuth流程的了解,我們知道,實(shí)際上User并沒(méi)有向第三方Consumer透露登錄Provider所需的賬號和密碼。同時(shí),用戶(hù)可以使用消費者的特殊服務(wù)。多么巧妙而安全的操作過(guò)程!
此外,在上圖中,Consumer 向 Provider 發(fā)出了 3 個(gè)不同的請求。實(shí)際上,Provider 提供了 3 個(gè)不同功能的 URL 供 Consumer 訪(fǎng)問(wèn)。這3個(gè)網(wǎng)址在新浪微博開(kāi)放平臺的截圖如下:

新浪微博開(kāi)放平臺使用OAuth驗證并發(fā)布微博
使用新浪微博開(kāi)放平臺的API,首先需要獲取新浪分配的App key和App Secret。下面是我創(chuàng )建應用后新浪分配的App key和App Secret(這個(gè)要保密)。

然后下載微博SDK,我用的是Java的weibo4j。
將SDK包中的weibo.java類(lèi)的App Key和App Secret修改為剛剛獲取的App Key和App Secret,如下圖使用說(shuō)明所示:

完成這些之后,就可以根據提供的Demo開(kāi)始編寫(xiě)代碼了。如下:
WebOAuth.java用于初始化Weibo.java類(lèi)所需的App Key和App Secret,并提供getRequestToken()和gettAccessToken()方法獲取Request Token和Access Token。所需參數如代碼所示。此外,還提供了發(fā)布文本微博的update()方法。
package weibo4j.examples; import weibo4j.Status; import weibo4j.Weibo; import weibo4j.WeiboException; import weibo4j.http.AccessToken; import weibo4j.http.RequestToken; import java.io.UnsupportedEncodingException; // Web 方式認證 public class WebOAuth { private Weibo weibo; public WebOAuth(){ // 準備好Consumer Key、Consumer Secret // 對應于新浪微博應用就是申請到的 App key 和 Secret key System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY); System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET); weibo = new Weibo(); } // 根據傳入的 callback_url 獲取 request token public RequestToken getRequestToken(String backUrl) { try { // 指定 callback_url 并獲得 request token RequestToken requestToken = weibo.getOAuthRequestToken(backUrl); System.out.println("Request token: " + requestToken.getToken()); System.out.println("Request token secret: " + requestToken.getTokenSecret()); return requestToken; } catch (Exception e) { System.out.println("獲取Request token發(fā)生異常!"); e.printStackTrace(); return null; } } // 根據傳入的 request token 和 verifier 獲取 access token public AccessToken gettAccessToken(RequestToken requestToken, String verifier) { try { AccessToken accessToken = weibo.getOAuthAccessToken(requestToken .getToken(), requestToken.getTokenSecret(), verifier); System.out.println("Access token: " + accessToken.getToken()); System.out.println("Access token secret: " + accessToken.getTokenSecret()); return accessToken; } catch (Exception e) { System.out.println("獲取Access token發(fā)生異常!"); e.printStackTrace(); return null; } } // 根據傳入的 Access Token 和內容發(fā)表微博 public void update(AccessToken access, String content) { try { weibo.setToken(access.getToken(), access.getTokenSecret()); content = new String(content.getBytes("GBK"), "UTF-8"); Status status = weibo.updateStatus(content); System.out.println("成功發(fā)表微博:" + status.getText() + "."); } catch (UnsupportedEncodingException e) { System.out.println("微博內容轉編碼發(fā)生異常!"); e.printStackTrace(); } catch (WeiboException e) { System.out.println("發(fā)表微博發(fā)生異常!"); e.printStackTrace(); } } } request.jsp,用于提供 callback_url(這里我們自定義為下文中的callback.jsp),當獲取得到RequestToken之后,保存該RequestToken到Session中,并將頁(yè)面重定向到callback.jsp進(jìn)行驗證、授權。 請點(diǎn)擊進(jìn)行Web方式的OAuth認證!
callback.jsp,在上一步重定向之后,oauth_verifier 參數會(huì )附加到callback_url。這時(shí)候我們根據Session中存儲的RequestToken和獲取到的oauth_verifier參數來(lái)申請AccessToken。獲取到AccessToken后,我們將頁(yè)面重定向到writeWeibo.html頁(yè)面,用于寫(xiě)微博。
writeWeibo.html,很簡(jiǎn)單的HTML文件。 發(fā)布sina微博 請在這里寫(xiě)上140字符以?xún)鹊奈谋荆?lt;/br>測試新浪微博!</br></br> updateWeibo.jsp,用于發(fā)表文本微博,即調用WebOAuth.java 中的update方法。
在運行之前,我們要準備好Tomcat,把上面的源文件放到正確的目錄下。另外,SDK包中收錄的commons-httpclient-3.1.jar包也要添加到\WEB-INF\lib目錄下,以及weibo4j.jar(里面是具體的新浪微博開(kāi)放平臺中的Java實(shí)現)。
運行Tomcat,在瀏覽器中訪(fǎng)問(wèn)request.jsp頁(yè)面,如下圖:

點(diǎn)擊鏈接,如下圖(注意地址欄的變化):

地址欄的網(wǎng)址如下:
://localhost:8080/sinaweibo/callback.jsp
填寫(xiě)具體有效的新浪微博賬號、密碼并授權。以下是我用來(lái)測試授權的微博賬號的填寫(xiě)結果:

地址欄的網(wǎng)址如下:
:8080/sinaweibo/writeWeibo.html
點(diǎn)擊“發(fā)布”,如下圖:

登錄微博查看,如下圖:

查看賬戶(hù)授權的應用列表:
到目前為止,關(guān)于 OAuth

使用新浪微博開(kāi)放平臺發(fā)布微博的方式大概就是這個(gè)過(guò)程。
概括:
1、 其實(shí)還有很多細節沒(méi)說(shuō)到。我試了很多次才發(fā)現問(wèn)題,理解問(wèn)題,然后解決問(wèn)題。
2、 如果我們登錄新浪微博的賬號信息cookie已經(jīng)保存在瀏覽器中,那么授權時(shí)就不需要輸入賬號信息了,當然不用當前賬號也可以修改用于授權;
3、 控制臺中也有一些輸入的信息,比如Token、URL、服務(wù)器返回信息等,截圖中沒(méi)有顯示。
以上就是使用Java驗證OAuth協(xié)議發(fā)送微博的教程的詳細內容。更多詳情請關(guān)注其他相關(guān)html中文網(wǎng)站文章!
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(騰訊微博開(kāi)放平臺開(kāi)發(fā)者服務(wù)協(xié)議如何開(kāi)發(fā)微博應用?(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 74 次瀏覽 ? 2021-10-13 02:18
騰訊微博開(kāi)放平臺API現已開(kāi)放。使用騰訊微博開(kāi)放平臺提供的API創(chuàng )建自己的應用程序,您必須先填寫(xiě)個(gè)人信息,聯(lián)系郵箱驗證,取得開(kāi)發(fā)者資質(zhì),才能創(chuàng )建自己的應用程序。騰訊微博開(kāi)放平臺是基于騰訊微博系統面向開(kāi)發(fā)者和用戶(hù)開(kāi)放的數據共享和傳播平臺。開(kāi)發(fā)者和用戶(hù)登錄平臺后,可以使用平臺提供的開(kāi)放API接口創(chuàng )建應用程序,從微博系統獲取信息,或將新信息傳播到整個(gè)微博系統??梢蕴砑痈鞣N API 接口和應用程序。發(fā)揮你的智慧將創(chuàng )造無(wú)窮無(wú)盡的應用和樂(lè )趣。
平臺說(shuō)明:
騰訊微博開(kāi)放平臺是基于騰訊微博系統面向開(kāi)發(fā)者和用戶(hù)開(kāi)放的數據共享和傳播平臺。開(kāi)發(fā)者和用戶(hù)登錄平臺后,可以使用平臺提供的開(kāi)放API接口創(chuàng )建應用程序,從微博系統獲取信息,或將新信息傳播到整個(gè)微博系統??梢蕴砑痈鞣N API 接口和應用程序。發(fā)揮你的智慧,創(chuàng )造無(wú)窮的應用和樂(lè )趣!
平臺介紹——微博開(kāi)放平臺可以獲得的資源和優(yōu)勢
應用程序開(kāi)發(fā)說(shuō)明-講解如何成為開(kāi)發(fā)人員并創(chuàng )建應用程序
申請審核流程——審核申請源字段的好處,以及如何審核
開(kāi)發(fā)者協(xié)議——在此查看騰訊微博開(kāi)放平臺開(kāi)發(fā)者服務(wù)協(xié)議
如何開(kāi)發(fā)微博應用?(立即成為開(kāi)發(fā)人員)
您只需要按照以下步驟操作:
第一步:填寫(xiě)您的開(kāi)發(fā)者信息;
第二步:驗證聯(lián)系郵箱;(電子郵件將作為我們與您聯(lián)系的重要方式,請提供常用的電子郵件地址)
第三步:填寫(xiě)要創(chuàng )建的應用信息。
您可以立即獲取微博App Key和App Secret,調用微博API,開(kāi)始應用開(kāi)發(fā)。查看詳細說(shuō)明
----
代表中國最先進(jìn)互聯(lián)網(wǎng)技術(shù)的騰訊終于邁出了開(kāi)放的第一步:-) 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(騰訊微博開(kāi)放平臺開(kāi)發(fā)者服務(wù)協(xié)議如何開(kāi)發(fā)微博應用?(圖))
騰訊微博開(kāi)放平臺API現已開(kāi)放。使用騰訊微博開(kāi)放平臺提供的API創(chuàng )建自己的應用程序,您必須先填寫(xiě)個(gè)人信息,聯(lián)系郵箱驗證,取得開(kāi)發(fā)者資質(zhì),才能創(chuàng )建自己的應用程序。騰訊微博開(kāi)放平臺是基于騰訊微博系統面向開(kāi)發(fā)者和用戶(hù)開(kāi)放的數據共享和傳播平臺。開(kāi)發(fā)者和用戶(hù)登錄平臺后,可以使用平臺提供的開(kāi)放API接口創(chuàng )建應用程序,從微博系統獲取信息,或將新信息傳播到整個(gè)微博系統??梢蕴砑痈鞣N API 接口和應用程序。發(fā)揮你的智慧將創(chuàng )造無(wú)窮無(wú)盡的應用和樂(lè )趣。
平臺說(shuō)明:
騰訊微博開(kāi)放平臺是基于騰訊微博系統面向開(kāi)發(fā)者和用戶(hù)開(kāi)放的數據共享和傳播平臺。開(kāi)發(fā)者和用戶(hù)登錄平臺后,可以使用平臺提供的開(kāi)放API接口創(chuàng )建應用程序,從微博系統獲取信息,或將新信息傳播到整個(gè)微博系統??梢蕴砑痈鞣N API 接口和應用程序。發(fā)揮你的智慧,創(chuàng )造無(wú)窮的應用和樂(lè )趣!
平臺介紹——微博開(kāi)放平臺可以獲得的資源和優(yōu)勢
應用程序開(kāi)發(fā)說(shuō)明-講解如何成為開(kāi)發(fā)人員并創(chuàng )建應用程序
申請審核流程——審核申請源字段的好處,以及如何審核
開(kāi)發(fā)者協(xié)議——在此查看騰訊微博開(kāi)放平臺開(kāi)發(fā)者服務(wù)協(xié)議
如何開(kāi)發(fā)微博應用?(立即成為開(kāi)發(fā)人員)
您只需要按照以下步驟操作:
第一步:填寫(xiě)您的開(kāi)發(fā)者信息;
第二步:驗證聯(lián)系郵箱;(電子郵件將作為我們與您聯(lián)系的重要方式,請提供常用的電子郵件地址)
第三步:填寫(xiě)要創(chuàng )建的應用信息。
您可以立即獲取微博App Key和App Secret,調用微博API,開(kāi)始應用開(kāi)發(fā)。查看詳細說(shuō)明
----
代表中國最先進(jìn)互聯(lián)網(wǎng)技術(shù)的騰訊終于邁出了開(kāi)放的第一步:-)
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(有些特殊的emoji表情符會(huì )被「同步圈」識別錯誤!)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 88 次瀏覽 ? 2021-10-13 02:17
在微信公眾號和朋友圈瘋狂擠壓個(gè)人時(shí)間的當下,很多人的微博賬號逐漸被拋棄,而這個(gè)工具可以幫你自動(dòng)同步任何朋友圈圖文內容到你的微博。
這個(gè)可以為你省去很多麻煩的小工具叫做“同步圈”。顧名思義,就是把你的“朋友圈”“同步”到微博上。
為了一勞永逸地享受自動(dòng)同步的便利,您需要提前在PC瀏覽器中使用您的個(gè)人微博賬號登錄同步推文。網(wǎng)址在這里。獲得登錄授權后,網(wǎng)頁(yè)上會(huì )顯示二維碼。用微信掃一掃后,添加一個(gè)名為“同步圈”的個(gè)人微信賬號,很快就會(huì )通過(guò)驗證。
接下來(lái),您需要將二維碼下方的四位驗證碼發(fā)送到“同步圈”賬號,系統會(huì )提示您綁定成功!
經(jīng)測試,“同步圈”目前支持純文本、文本+表情、文本+圖片的自動(dòng)同步。您在朋友圈發(fā)布的小視頻和地理位置無(wú)法同步到您的個(gè)人微博。經(jīng)過(guò)實(shí)測,我也發(fā)現一些特殊的表情符號會(huì )被“同步圈”誤識別,可能會(huì )造成一些歧義或誤解。這可能是微信朋友圈和微博支持的表情符號不一致造成的。
從原理上看,“同步圈”調用了微信朋友圈側的一些內容識別接口,可以自動(dòng)抓取綁定用戶(hù)的朋友圈內容,然后利用微博開(kāi)放平臺的API接口發(fā)送同樣的內容內容出去。抽象地說(shuō),“同步圈”與著(zhù)名的自動(dòng)化服務(wù)IFTTT非常相似。只是它在微信封閉的城墻上開(kāi)設了一個(gè)單向信息站,幫助用戶(hù)將內容輸出到更廣闊的公共網(wǎng)絡(luò )空間。
遺憾的是,根據pc6編輯對騰訊和微信團隊的了解,這個(gè)同步圈的“小聰明”可能很快就會(huì )失敗。
安卓版
新浪微博類(lèi)型:社交聊天 大?。?9.9M 版本:v5.6.0 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(有些特殊的emoji表情符會(huì )被「同步圈」識別錯誤!)
在微信公眾號和朋友圈瘋狂擠壓個(gè)人時(shí)間的當下,很多人的微博賬號逐漸被拋棄,而這個(gè)工具可以幫你自動(dòng)同步任何朋友圈圖文內容到你的微博。
這個(gè)可以為你省去很多麻煩的小工具叫做“同步圈”。顧名思義,就是把你的“朋友圈”“同步”到微博上。

為了一勞永逸地享受自動(dòng)同步的便利,您需要提前在PC瀏覽器中使用您的個(gè)人微博賬號登錄同步推文。網(wǎng)址在這里。獲得登錄授權后,網(wǎng)頁(yè)上會(huì )顯示二維碼。用微信掃一掃后,添加一個(gè)名為“同步圈”的個(gè)人微信賬號,很快就會(huì )通過(guò)驗證。
接下來(lái),您需要將二維碼下方的四位驗證碼發(fā)送到“同步圈”賬號,系統會(huì )提示您綁定成功!
經(jīng)測試,“同步圈”目前支持純文本、文本+表情、文本+圖片的自動(dòng)同步。您在朋友圈發(fā)布的小視頻和地理位置無(wú)法同步到您的個(gè)人微博。經(jīng)過(guò)實(shí)測,我也發(fā)現一些特殊的表情符號會(huì )被“同步圈”誤識別,可能會(huì )造成一些歧義或誤解。這可能是微信朋友圈和微博支持的表情符號不一致造成的。
從原理上看,“同步圈”調用了微信朋友圈側的一些內容識別接口,可以自動(dòng)抓取綁定用戶(hù)的朋友圈內容,然后利用微博開(kāi)放平臺的API接口發(fā)送同樣的內容內容出去。抽象地說(shuō),“同步圈”與著(zhù)名的自動(dòng)化服務(wù)IFTTT非常相似。只是它在微信封閉的城墻上開(kāi)設了一個(gè)單向信息站,幫助用戶(hù)將內容輸出到更廣闊的公共網(wǎng)絡(luò )空間。
遺憾的是,根據pc6編輯對騰訊和微信團隊的了解,這個(gè)同步圈的“小聰明”可能很快就會(huì )失敗。
安卓版

新浪微博類(lèi)型:社交聊天 大?。?9.9M 版本:v5.6.0
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(鄭敏先任職于)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 69 次瀏覽 ? 2021-10-12 17:06
作者簡(jiǎn)介:鄭敏賢,曾任職,售前工程師。從事SDN、白盒交換機等開(kāi)放網(wǎng)絡(luò )產(chǎn)品的推廣。
成立于 2005 年。該公司提供了一個(gè)開(kāi)源網(wǎng)絡(luò )操作系統,也稱(chēng)為 Vyatta,可以在商用硬件上運行。Vyatta 的名字取自梵文中的“open”,發(fā)音為“vee-at-ah”。2006年,推出Vyatta商業(yè)訂閱版,每年定價(jià)500美元。
隨著(zhù)云計算的發(fā)展,Vyatta得到了眾多公有云廠(chǎng)商的支持。例如,AWS Marketplace 中的第一個(gè)虛擬路由器應用程序是 Vyatta:
2012年11月博科收購Vyatta后,開(kāi)源社區版被取消,軟件更名為Vyatta vRouter。但 Vyatta 的開(kāi)源之路并沒(méi)有結束。為了響應博科停止 Vyatta 社區版的決定,獨立開(kāi)發(fā)人員從 Vyatta Core 6.6 R1 版本(VyOS 開(kāi)源軟件項目)中分出一個(gè)分支。
從 Vyatta 到 dNOS
Vyatta 于 2017 年 7 月被 AT&T 收購。 Vyatta NOS 構成了 AT&T 開(kāi)源 dNOS(分解網(wǎng)絡(luò )操作系統)平臺的基礎。
dNOS 由硬件和軟件組件組成:
AT&T 在這些場(chǎng)景中使用 dNOS 軟件:
dNOS功能及組件圖
簡(jiǎn)單分析一下上圖中的三個(gè)層次:
1、應用程序是路由器上控制平面或管理平面組件的任何網(wǎng)絡(luò )功能。
2、共享基礎設施和數據。NOS 必須能夠使用通用方法和協(xié)議在來(lái)自不同供應商的應用程序之間共享數據。dNOS 的一個(gè)關(guān)鍵目標是創(chuàng )建一個(gè)促進(jìn)應用程序之間共享的開(kāi)放環(huán)境。為此,dNOS 包括通用基礎設施組件和共享數據結構。
基本網(wǎng)絡(luò )狀態(tài)信息存儲在一組通用共享數據結構中。這些數據結構包括有關(guān)接口狀態(tài)、鄰居解析表和轉發(fā)信息庫 (FIB) 狀態(tài)的信息。應用程序使用通用方法更新相關(guān)的基本網(wǎng)絡(luò )狀態(tài)共享數據。
所有共享基礎設施數據都由使用合適的標準數據結構和/或數據建模語(yǔ)言(例如,YANG)表達的標準化數據模型定義。數據共享基礎設施和基礎網(wǎng)絡(luò )狀態(tài)共享數據結構實(shí)現了不同協(xié)議之間公共數據的共享(例如,經(jīng)典IGP可訪(fǎng)問(wèn)的鏈路狀態(tài)數據,如用于SDN控制應用的OSPF和ISIS和BGP-LS),以及優(yōu)雅的協(xié)議選擇的演變(例如,使用 gRPC 而不是 SNMP 來(lái)采集 OAM 數據)。
用戶(hù)、業(yè)務(wù)流程和數據導出接口提供了一個(gè)通用的基礎設施,用于將應用程序和系統基礎設施連接到外部系統以進(jìn)行管理和分析。ONAP管控系統北向接口包括NetConf/YANG和gRPC,支持流式和(傳統)輪詢(xún)機制進(jìn)行遙測數據采集。
3、dNOS 包括一組支持多個(gè)不同轉發(fā)層的組件。轉發(fā)抽象層 (FAL) 負責從共享基礎設施和數據組件獲取高級網(wǎng)絡(luò )狀態(tài)輸入,并將它們轉換為供應商特定的 API,用于各種軟件和硬件轉發(fā)選項:
FAL 的目標是讓 ASIC 供應商多樣化,多個(gè) ASIC 共享一個(gè)與目標無(wú)關(guān)的公共抽象層。FAL 的長(cháng)期目標是收錄支持完全可編程硬件管道的抽象。這種抽象將基于正式的網(wǎng)絡(luò )編程語(yǔ)言,例如 P4 或其他類(lèi)似的行業(yè)認可的標準化語(yǔ)言。
從 dNOS 到 DANOS
AT&T 于 2018 年初向 Linux 基金會(huì )貢獻了 dNOS 作為種子代碼,Linux 基金會(huì )據此建立了 DANOS 項目。DANOS(Dis-Aggregated Network Operating System)將提供一個(gè)開(kāi)放的 NOS 框架,使用現有的開(kāi)源資源和硬件平臺,如白盒交換機、白盒路由器和 uCPE。Vyatta第四代架構引入了商用芯片+軟件轉發(fā)的混合轉發(fā)模式。采用Vyatta第四代架構的DANOS預計將于2019年第一季度正式發(fā)布。
DANOS專(zhuān)注于硬件/軟件分解,超越云數據中心網(wǎng)絡(luò )功能,創(chuàng )建和培育路由軟件組件供應商生態(tài)系統,提供創(chuàng )新的網(wǎng)絡(luò )解決方案,滿(mǎn)足城域網(wǎng)/廣域網(wǎng)(包括蜂窩網(wǎng)絡(luò ))規?;?、快速發(fā)展的功能需求。站點(diǎn)路由器、城域以太網(wǎng)服務(wù)和 RAN 回程路由器/交換機、互聯(lián)網(wǎng)和 VPN 服務(wù)邊緣路由器、運營(yíng)商間 POP 互連結構、骨干核心路由器等)。DANOS 目前計劃支持這五個(gè)操作系統:dNOS、FRR、SONiC、OpenSwitch 和 Stratum。
DANOS的三大特點(diǎn):
DANOS/dNOS詳細架構圖(顏色對應之前的“dNOS功能和組件圖”)
對比上圖,我粗略介紹一下DANOS的控制和管理平面、基礎操作系統和數據平面:
控制和管理平面:基本操作系統:數據平面:參考:
1、%20whitepaper.pdf
2、
3、 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(鄭敏先任職于)
作者簡(jiǎn)介:鄭敏賢,曾任職,售前工程師。從事SDN、白盒交換機等開(kāi)放網(wǎng)絡(luò )產(chǎn)品的推廣。

成立于 2005 年。該公司提供了一個(gè)開(kāi)源網(wǎng)絡(luò )操作系統,也稱(chēng)為 Vyatta,可以在商用硬件上運行。Vyatta 的名字取自梵文中的“open”,發(fā)音為“vee-at-ah”。2006年,推出Vyatta商業(yè)訂閱版,每年定價(jià)500美元。

隨著(zhù)云計算的發(fā)展,Vyatta得到了眾多公有云廠(chǎng)商的支持。例如,AWS Marketplace 中的第一個(gè)虛擬路由器應用程序是 Vyatta:

2012年11月博科收購Vyatta后,開(kāi)源社區版被取消,軟件更名為Vyatta vRouter。但 Vyatta 的開(kāi)源之路并沒(méi)有結束。為了響應博科停止 Vyatta 社區版的決定,獨立開(kāi)發(fā)人員從 Vyatta Core 6.6 R1 版本(VyOS 開(kāi)源軟件項目)中分出一個(gè)分支。
從 Vyatta 到 dNOS
Vyatta 于 2017 年 7 月被 AT&T 收購。 Vyatta NOS 構成了 AT&T 開(kāi)源 dNOS(分解網(wǎng)絡(luò )操作系統)平臺的基礎。
dNOS 由硬件和軟件組件組成:
AT&T 在這些場(chǎng)景中使用 dNOS 軟件:

dNOS功能及組件圖
簡(jiǎn)單分析一下上圖中的三個(gè)層次:
1、應用程序是路由器上控制平面或管理平面組件的任何網(wǎng)絡(luò )功能。
2、共享基礎設施和數據。NOS 必須能夠使用通用方法和協(xié)議在來(lái)自不同供應商的應用程序之間共享數據。dNOS 的一個(gè)關(guān)鍵目標是創(chuàng )建一個(gè)促進(jìn)應用程序之間共享的開(kāi)放環(huán)境。為此,dNOS 包括通用基礎設施組件和共享數據結構。
基本網(wǎng)絡(luò )狀態(tài)信息存儲在一組通用共享數據結構中。這些數據結構包括有關(guān)接口狀態(tài)、鄰居解析表和轉發(fā)信息庫 (FIB) 狀態(tài)的信息。應用程序使用通用方法更新相關(guān)的基本網(wǎng)絡(luò )狀態(tài)共享數據。
所有共享基礎設施數據都由使用合適的標準數據結構和/或數據建模語(yǔ)言(例如,YANG)表達的標準化數據模型定義。數據共享基礎設施和基礎網(wǎng)絡(luò )狀態(tài)共享數據結構實(shí)現了不同協(xié)議之間公共數據的共享(例如,經(jīng)典IGP可訪(fǎng)問(wèn)的鏈路狀態(tài)數據,如用于SDN控制應用的OSPF和ISIS和BGP-LS),以及優(yōu)雅的協(xié)議選擇的演變(例如,使用 gRPC 而不是 SNMP 來(lái)采集 OAM 數據)。
用戶(hù)、業(yè)務(wù)流程和數據導出接口提供了一個(gè)通用的基礎設施,用于將應用程序和系統基礎設施連接到外部系統以進(jìn)行管理和分析。ONAP管控系統北向接口包括NetConf/YANG和gRPC,支持流式和(傳統)輪詢(xún)機制進(jìn)行遙測數據采集。
3、dNOS 包括一組支持多個(gè)不同轉發(fā)層的組件。轉發(fā)抽象層 (FAL) 負責從共享基礎設施和數據組件獲取高級網(wǎng)絡(luò )狀態(tài)輸入,并將它們轉換為供應商特定的 API,用于各種軟件和硬件轉發(fā)選項:
FAL 的目標是讓 ASIC 供應商多樣化,多個(gè) ASIC 共享一個(gè)與目標無(wú)關(guān)的公共抽象層。FAL 的長(cháng)期目標是收錄支持完全可編程硬件管道的抽象。這種抽象將基于正式的網(wǎng)絡(luò )編程語(yǔ)言,例如 P4 或其他類(lèi)似的行業(yè)認可的標準化語(yǔ)言。
從 dNOS 到 DANOS
AT&T 于 2018 年初向 Linux 基金會(huì )貢獻了 dNOS 作為種子代碼,Linux 基金會(huì )據此建立了 DANOS 項目。DANOS(Dis-Aggregated Network Operating System)將提供一個(gè)開(kāi)放的 NOS 框架,使用現有的開(kāi)源資源和硬件平臺,如白盒交換機、白盒路由器和 uCPE。Vyatta第四代架構引入了商用芯片+軟件轉發(fā)的混合轉發(fā)模式。采用Vyatta第四代架構的DANOS預計將于2019年第一季度正式發(fā)布。

DANOS專(zhuān)注于硬件/軟件分解,超越云數據中心網(wǎng)絡(luò )功能,創(chuàng )建和培育路由軟件組件供應商生態(tài)系統,提供創(chuàng )新的網(wǎng)絡(luò )解決方案,滿(mǎn)足城域網(wǎng)/廣域網(wǎng)(包括蜂窩網(wǎng)絡(luò ))規?;?、快速發(fā)展的功能需求。站點(diǎn)路由器、城域以太網(wǎng)服務(wù)和 RAN 回程路由器/交換機、互聯(lián)網(wǎng)和 VPN 服務(wù)邊緣路由器、運營(yíng)商間 POP 互連結構、骨干核心路由器等)。DANOS 目前計劃支持這五個(gè)操作系統:dNOS、FRR、SONiC、OpenSwitch 和 Stratum。
DANOS的三大特點(diǎn):

DANOS/dNOS詳細架構圖(顏色對應之前的“dNOS功能和組件圖”)
對比上圖,我粗略介紹一下DANOS的控制和管理平面、基礎操作系統和數據平面:
控制和管理平面:基本操作系統:數據平面:參考:
1、%20whitepaper.pdf
2、
3、
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(基于python的開(kāi)放平臺簽名、加密解密以及授權認證測試體系)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 75 次瀏覽 ? 2021-10-10 21:05
目前,大型頂級公司擁有非常成熟的開(kāi)放平臺服務(wù),如微信開(kāi)放平臺、新浪微博開(kāi)放平臺、支付寶開(kāi)放平臺等。開(kāi)放平臺的發(fā)展為第三方個(gè)人或公司提供了巨大的機會(huì )。開(kāi)發(fā)者想要接入各大開(kāi)放平臺,必須遵守開(kāi)放平臺的安全機制,實(shí)現業(yè)務(wù)邏輯的前提。一是實(shí)現簽名驗證、加解密、授權鑒權機制。
本文介紹了基于python的開(kāi)放平臺簽名認證測試系統,可用于第三方應用的沙箱測試,也可應用于服務(wù)商相關(guān)系統的綜合測試。
一、簡(jiǎn)介
開(kāi)放平臺是指大型企業(yè)以業(yè)務(wù)+場(chǎng)景+解決方案+技術(shù)的優(yōu)勢,將自身的數據能力、計算能力、用戶(hù)系統、產(chǎn)品能力等資源打包,通過(guò)openAPI、openSDK等方式向第三方個(gè)人或個(gè)人開(kāi)放,和 openH5。企業(yè)使用,實(shí)現第三方與服務(wù)商企業(yè)自身的互利共贏(yíng)。
目前各大廠(chǎng)商的開(kāi)放平臺都比較成熟,如微信開(kāi)放平臺、新浪微博開(kāi)放平臺、支付寶開(kāi)放平臺等。與此同時(shí),各大商業(yè)銀行也在大力發(fā)展自身的開(kāi)放銀行服務(wù)。作為第三方開(kāi)發(fā)者,一般來(lái)說(shuō),接入開(kāi)放平臺有一個(gè)相對統一的流程。下圖為微信開(kāi)放平臺開(kāi)通流程。
圖1 微信開(kāi)放平臺接入流程
如圖1第三步所示,應用上線(xiàn)前,必須進(jìn)行必要的測試。業(yè)務(wù)邏輯測試的前提是測試簽名驗證、加解密、授權認證等安全認證機制。python社區非常成熟,廣泛應用于機器學(xué)習、數據分析、網(wǎng)絡(luò )爬蟲(chóng)、自動(dòng)化腳本等諸多領(lǐng)域。
在web開(kāi)發(fā)方面,目前有很多公司如Instagram、Quora、Lyft、Dropbox、知乎等后端使用python進(jìn)行開(kāi)發(fā)。本文介紹了基于python的簽名驗證、加解密、授權認證測試的實(shí)現。
二、簽名驗證
第三方個(gè)人或企業(yè)通過(guò)開(kāi)放平臺門(mén)戶(hù)網(wǎng)站提交申請成為開(kāi)發(fā)者。開(kāi)發(fā)者資質(zhì)認證通過(guò)后,開(kāi)發(fā)者通常會(huì )從服務(wù)商處獲得自己的appid、appsecret和證書(shū)。該證書(shū)收錄第一個(gè) 第三方開(kāi)發(fā)者的私鑰和服務(wù)提供者的公鑰。
服務(wù)提供商保留第三方開(kāi)發(fā)者的公鑰和自己的私鑰。開(kāi)發(fā)者使用自己的私鑰進(jìn)行簽名,并將消息發(fā)送到開(kāi)放平臺服務(wù)器。服務(wù)器驗證通過(guò)后,會(huì )使用自己的私鑰對返回給開(kāi)發(fā)者的消息進(jìn)行簽名,開(kāi)發(fā)者收到返回消息后,使用服務(wù)方提供的公鑰進(jìn)行驗證。通過(guò)這個(gè)過(guò)程,開(kāi)發(fā)者和服務(wù)端可以相互確認發(fā)送的消息沒(méi)有被中間人篡改。
本文的簽名驗證使用RSA算法進(jìn)行演示。使用Python的Crypto庫,安裝時(shí)需要使用pip或conda等其他包管理工具。
一般來(lái)說(shuō),開(kāi)發(fā)者需要對消息的每個(gè)字段進(jìn)行預處理。
1.去除請求字典中的所有空值或不必要的參數(如sign、sign_type等);
2. 對字典進(jìn)行排序(按照ASCII碼從小到大);
3. 按照“參數=參數值”的模式,將字典中的所有元素用“&”字符組合成一個(gè)字符串。
數據預處理功能如下圖所示:
圖2 數據預處理功能
當開(kāi)發(fā)者發(fā)送消息時(shí),會(huì )使用Hash函數從消息中生成摘要,然后用私人消息對摘要進(jìn)行加密。加密后的摘要用作消息的數字簽名,并與消息一起發(fā)送到服務(wù)器。下圖展示了RSA算法的簽名函數的實(shí)現:
圖3 數字簽名功能
首先使用hash_method函數選擇要使用的digest算法,可以根據實(shí)際情況重構函數。這里演示了 MD5 和 SHA256 算法的示例。簽名函數首先要讀取開(kāi)發(fā)者的私鑰,然后使用RSA算法完成簽名。
開(kāi)發(fā)者收到服務(wù)器返回的消息后,使用相同的Hash函數從接收到的原創(chuàng )消息中計算出消息的摘要,然后使用發(fā)送方的公鑰對消息所附的數字簽名進(jìn)行解密,如果兩個(gè)摘要是一致,開(kāi)發(fā)??者可以確認消息是服務(wù)器發(fā)送的,沒(méi)有被篡改。
圖4 簽名驗證功能
三、加解密
除了用于數字簽名之外,RAS 算法還可以用于消息的非對稱(chēng)加密。非對稱(chēng)加密比對稱(chēng)加密更安全,但由于算法強度比對稱(chēng)加密復雜,因此加解密速度比對稱(chēng)加密慢。對稱(chēng)加密算法的特點(diǎn)是計算量小、加密速度快、加密效率高。缺點(diǎn)是交易雙方使用相同的密鑰,無(wú)法保證安全。常見(jiàn)的對稱(chēng)加密算法有DES、AES等。
在互聯(lián)網(wǎng)上傳輸消息時(shí),要保證信息的安全,保證沒(méi)有高延遲。因此,對稱(chēng)加密算法和非對稱(chēng)加密算法通常結合使用。使用非對稱(chēng)加密算法對對稱(chēng)加密算法使用的密鑰進(jìn)行數字簽名和加密傳輸,然后使用對稱(chēng)加密算法對消息進(jìn)行加密和解密,保證了消息傳輸的安全性和消息的傳輸速度改善用戶(hù)體驗。
下面介紹AES加解密的python實(shí)現。其他加密算法類(lèi)似。您可以根據服務(wù)方的要求選擇使用哪種算法。AES 加密方式有五種:ECB、CBC、CTR、CFB、OFB。最常用的是CBC加密。CBC 加密需要一個(gè) 16 位的密鑰和一個(gè) 16 位的偏移量。開(kāi)發(fā)者使用服務(wù)器提供的appsecret作為加解密密鑰。具體實(shí)現如下圖所示:
圖5 AES加解密
加密的數據應與簽名一起發(fā)送到服務(wù)器。通常,消息是否使用對稱(chēng)加密是可選的。開(kāi)發(fā)者可以根據開(kāi)放平臺的規定和交易的重要性來(lái)選擇是否加密。
四、授權
各大開(kāi)放平臺都有自己的授權認證機制,最流行的機制是OAuth2.0。OAuth2.0 是一種開(kāi)放的授權標準,允許用戶(hù)授權第三方應用訪(fǎng)問(wèn)用戶(hù)在某個(gè)服務(wù)(如微博、微信、QQ等)上的特定私有資源,而無(wú)需提供帳戶(hù)密碼給第三方。對于第三方應用,無(wú)需為第三方應用注冊賬號。如果要進(jìn)行開(kāi)放平臺授權認證測試,必須按照OAuth2.0標準連接服務(wù)方。一般來(lái)說(shuō),服務(wù)提供者提供授權服務(wù),主要提供兩類(lèi)接口:
1.授權接口:接受第三方應用的授權請求。該接口通常收錄以下參數:
response_type:必需。該值固定為“代碼”。
client_id:必需。第三方應用的標識ID,即appID。
狀態(tài):可選。第三方提供的字符串,服務(wù)器將原樣返回。
redirect_uri:必需。授權成功后的重定向地址。
范圍:可選。表示要訪(fǎng)問(wèn)的資源的授權范圍。
成功訪(fǎng)問(wèn)該接口后,將獲得一個(gè)授權碼。
2.獲取訪(fǎng)問(wèn)令牌(token)接口:使用授權接口提供的授權碼向第三方應用發(fā)放訪(fǎng)問(wèn)令牌。通常收錄以下參數:
grant_type:必需。固定值“authorization_code”。
代碼:必填。授權碼在授權界面響應。
redirect_uri:必需。必須與授權接口中提供的redirect_uri相同。
client_id:必需。必須與授權界面提供的appID一致。
第三方應用獲得令牌后,可以使用令牌請求用戶(hù)授權其訪(fǎng)問(wèn)服務(wù)端存儲的資源。
以上接口的請求可以自己編碼實(shí)現。Python的django-allauth庫封裝了GitHub、Twitter、微博、微信、百度等數十種第三方授權認證方式,通過(guò)簡(jiǎn)單的配置即可應對各大廠(chǎng)商開(kāi)放平臺的授權認證測試。下圖展示了如何在django應用中注冊django-allauth第三方登錄服務(wù)。
圖6 使用django-allauth庫完成第三方授權登錄
五、總結
本文介紹了使用python連接各大開(kāi)放平臺實(shí)現簽名驗證、加解密、授權認證的測試方法,并給出了詳細的例子。開(kāi)發(fā)者可以將上述方法封裝到django或其他框架的web應用中,形成便于測試人員操作的界面。在處理簽名驗證、加解密、授權認證等測試或開(kāi)發(fā)工作時(shí),可以大大提高工作效率。
我是誰(shuí)?
我是一名資深的測試人員,從事軟件測試工作多年。今年年初花了一個(gè)月時(shí)間整理了一份2020年最適合學(xué)習的軟件測試學(xué)習干貨,可以送給每一個(gè)對軟件測試感興趣的小伙伴。想要領(lǐng)取的話(huà),可以關(guān)注我的頭條號,后臺給我發(fā)私信:【測試】,免費領(lǐng)取。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(基于python的開(kāi)放平臺簽名、加密解密以及授權認證測試體系)
目前,大型頂級公司擁有非常成熟的開(kāi)放平臺服務(wù),如微信開(kāi)放平臺、新浪微博開(kāi)放平臺、支付寶開(kāi)放平臺等。開(kāi)放平臺的發(fā)展為第三方個(gè)人或公司提供了巨大的機會(huì )。開(kāi)發(fā)者想要接入各大開(kāi)放平臺,必須遵守開(kāi)放平臺的安全機制,實(shí)現業(yè)務(wù)邏輯的前提。一是實(shí)現簽名驗證、加解密、授權鑒權機制。
本文介紹了基于python的開(kāi)放平臺簽名認證測試系統,可用于第三方應用的沙箱測試,也可應用于服務(wù)商相關(guān)系統的綜合測試。
一、簡(jiǎn)介
開(kāi)放平臺是指大型企業(yè)以業(yè)務(wù)+場(chǎng)景+解決方案+技術(shù)的優(yōu)勢,將自身的數據能力、計算能力、用戶(hù)系統、產(chǎn)品能力等資源打包,通過(guò)openAPI、openSDK等方式向第三方個(gè)人或個(gè)人開(kāi)放,和 openH5。企業(yè)使用,實(shí)現第三方與服務(wù)商企業(yè)自身的互利共贏(yíng)。
目前各大廠(chǎng)商的開(kāi)放平臺都比較成熟,如微信開(kāi)放平臺、新浪微博開(kāi)放平臺、支付寶開(kāi)放平臺等。與此同時(shí),各大商業(yè)銀行也在大力發(fā)展自身的開(kāi)放銀行服務(wù)。作為第三方開(kāi)發(fā)者,一般來(lái)說(shuō),接入開(kāi)放平臺有一個(gè)相對統一的流程。下圖為微信開(kāi)放平臺開(kāi)通流程。
圖1 微信開(kāi)放平臺接入流程
如圖1第三步所示,應用上線(xiàn)前,必須進(jìn)行必要的測試。業(yè)務(wù)邏輯測試的前提是測試簽名驗證、加解密、授權認證等安全認證機制。python社區非常成熟,廣泛應用于機器學(xué)習、數據分析、網(wǎng)絡(luò )爬蟲(chóng)、自動(dòng)化腳本等諸多領(lǐng)域。
在web開(kāi)發(fā)方面,目前有很多公司如Instagram、Quora、Lyft、Dropbox、知乎等后端使用python進(jìn)行開(kāi)發(fā)。本文介紹了基于python的簽名驗證、加解密、授權認證測試的實(shí)現。
二、簽名驗證
第三方個(gè)人或企業(yè)通過(guò)開(kāi)放平臺門(mén)戶(hù)網(wǎng)站提交申請成為開(kāi)發(fā)者。開(kāi)發(fā)者資質(zhì)認證通過(guò)后,開(kāi)發(fā)者通常會(huì )從服務(wù)商處獲得自己的appid、appsecret和證書(shū)。該證書(shū)收錄第一個(gè) 第三方開(kāi)發(fā)者的私鑰和服務(wù)提供者的公鑰。
服務(wù)提供商保留第三方開(kāi)發(fā)者的公鑰和自己的私鑰。開(kāi)發(fā)者使用自己的私鑰進(jìn)行簽名,并將消息發(fā)送到開(kāi)放平臺服務(wù)器。服務(wù)器驗證通過(guò)后,會(huì )使用自己的私鑰對返回給開(kāi)發(fā)者的消息進(jìn)行簽名,開(kāi)發(fā)者收到返回消息后,使用服務(wù)方提供的公鑰進(jìn)行驗證。通過(guò)這個(gè)過(guò)程,開(kāi)發(fā)者和服務(wù)端可以相互確認發(fā)送的消息沒(méi)有被中間人篡改。
本文的簽名驗證使用RSA算法進(jìn)行演示。使用Python的Crypto庫,安裝時(shí)需要使用pip或conda等其他包管理工具。
一般來(lái)說(shuō),開(kāi)發(fā)者需要對消息的每個(gè)字段進(jìn)行預處理。
1.去除請求字典中的所有空值或不必要的參數(如sign、sign_type等);
2. 對字典進(jìn)行排序(按照ASCII碼從小到大);
3. 按照“參數=參數值”的模式,將字典中的所有元素用“&”字符組合成一個(gè)字符串。
數據預處理功能如下圖所示:
圖2 數據預處理功能
當開(kāi)發(fā)者發(fā)送消息時(shí),會(huì )使用Hash函數從消息中生成摘要,然后用私人消息對摘要進(jìn)行加密。加密后的摘要用作消息的數字簽名,并與消息一起發(fā)送到服務(wù)器。下圖展示了RSA算法的簽名函數的實(shí)現:
圖3 數字簽名功能
首先使用hash_method函數選擇要使用的digest算法,可以根據實(shí)際情況重構函數。這里演示了 MD5 和 SHA256 算法的示例。簽名函數首先要讀取開(kāi)發(fā)者的私鑰,然后使用RSA算法完成簽名。
開(kāi)發(fā)者收到服務(wù)器返回的消息后,使用相同的Hash函數從接收到的原創(chuàng )消息中計算出消息的摘要,然后使用發(fā)送方的公鑰對消息所附的數字簽名進(jìn)行解密,如果兩個(gè)摘要是一致,開(kāi)發(fā)??者可以確認消息是服務(wù)器發(fā)送的,沒(méi)有被篡改。
圖4 簽名驗證功能
三、加解密
除了用于數字簽名之外,RAS 算法還可以用于消息的非對稱(chēng)加密。非對稱(chēng)加密比對稱(chēng)加密更安全,但由于算法強度比對稱(chēng)加密復雜,因此加解密速度比對稱(chēng)加密慢。對稱(chēng)加密算法的特點(diǎn)是計算量小、加密速度快、加密效率高。缺點(diǎn)是交易雙方使用相同的密鑰,無(wú)法保證安全。常見(jiàn)的對稱(chēng)加密算法有DES、AES等。
在互聯(lián)網(wǎng)上傳輸消息時(shí),要保證信息的安全,保證沒(méi)有高延遲。因此,對稱(chēng)加密算法和非對稱(chēng)加密算法通常結合使用。使用非對稱(chēng)加密算法對對稱(chēng)加密算法使用的密鑰進(jìn)行數字簽名和加密傳輸,然后使用對稱(chēng)加密算法對消息進(jìn)行加密和解密,保證了消息傳輸的安全性和消息的傳輸速度改善用戶(hù)體驗。
下面介紹AES加解密的python實(shí)現。其他加密算法類(lèi)似。您可以根據服務(wù)方的要求選擇使用哪種算法。AES 加密方式有五種:ECB、CBC、CTR、CFB、OFB。最常用的是CBC加密。CBC 加密需要一個(gè) 16 位的密鑰和一個(gè) 16 位的偏移量。開(kāi)發(fā)者使用服務(wù)器提供的appsecret作為加解密密鑰。具體實(shí)現如下圖所示:
圖5 AES加解密
加密的數據應與簽名一起發(fā)送到服務(wù)器。通常,消息是否使用對稱(chēng)加密是可選的。開(kāi)發(fā)者可以根據開(kāi)放平臺的規定和交易的重要性來(lái)選擇是否加密。
四、授權
各大開(kāi)放平臺都有自己的授權認證機制,最流行的機制是OAuth2.0。OAuth2.0 是一種開(kāi)放的授權標準,允許用戶(hù)授權第三方應用訪(fǎng)問(wèn)用戶(hù)在某個(gè)服務(wù)(如微博、微信、QQ等)上的特定私有資源,而無(wú)需提供帳戶(hù)密碼給第三方。對于第三方應用,無(wú)需為第三方應用注冊賬號。如果要進(jìn)行開(kāi)放平臺授權認證測試,必須按照OAuth2.0標準連接服務(wù)方。一般來(lái)說(shuō),服務(wù)提供者提供授權服務(wù),主要提供兩類(lèi)接口:
1.授權接口:接受第三方應用的授權請求。該接口通常收錄以下參數:
response_type:必需。該值固定為“代碼”。
client_id:必需。第三方應用的標識ID,即appID。
狀態(tài):可選。第三方提供的字符串,服務(wù)器將原樣返回。
redirect_uri:必需。授權成功后的重定向地址。
范圍:可選。表示要訪(fǎng)問(wèn)的資源的授權范圍。
成功訪(fǎng)問(wèn)該接口后,將獲得一個(gè)授權碼。
2.獲取訪(fǎng)問(wèn)令牌(token)接口:使用授權接口提供的授權碼向第三方應用發(fā)放訪(fǎng)問(wèn)令牌。通常收錄以下參數:
grant_type:必需。固定值“authorization_code”。
代碼:必填。授權碼在授權界面響應。
redirect_uri:必需。必須與授權接口中提供的redirect_uri相同。
client_id:必需。必須與授權界面提供的appID一致。
第三方應用獲得令牌后,可以使用令牌請求用戶(hù)授權其訪(fǎng)問(wèn)服務(wù)端存儲的資源。
以上接口的請求可以自己編碼實(shí)現。Python的django-allauth庫封裝了GitHub、Twitter、微博、微信、百度等數十種第三方授權認證方式,通過(guò)簡(jiǎn)單的配置即可應對各大廠(chǎng)商開(kāi)放平臺的授權認證測試。下圖展示了如何在django應用中注冊django-allauth第三方登錄服務(wù)。
圖6 使用django-allauth庫完成第三方授權登錄
五、總結
本文介紹了使用python連接各大開(kāi)放平臺實(shí)現簽名驗證、加解密、授權認證的測試方法,并給出了詳細的例子。開(kāi)發(fā)者可以將上述方法封裝到django或其他框架的web應用中,形成便于測試人員操作的界面。在處理簽名驗證、加解密、授權認證等測試或開(kāi)發(fā)工作時(shí),可以大大提高工作效率。
我是誰(shuí)?
我是一名資深的測試人員,從事軟件測試工作多年。今年年初花了一個(gè)月時(shí)間整理了一份2020年最適合學(xué)習的軟件測試學(xué)習干貨,可以送給每一個(gè)對軟件測試感興趣的小伙伴。想要領(lǐng)取的話(huà),可以關(guān)注我的頭條號,后臺給我發(fā)私信:【測試】,免費領(lǐng)取。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺注冊開(kāi)發(fā)者并獲取app和appsecret百度很容易)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 66 次瀏覽 ? 2021-10-10 10:36
前言:微博開(kāi)放平臺提供了微博數據的api接口。不僅可以直接使用api調用微博服務(wù)發(fā)布微博和查詢(xún)微博,更重要的是可以通過(guò)自己的網(wǎng)站api授權獲取新浪微博,調用微博的一些內容,好像我們看到了在網(wǎng)站、文章想分享到微博或其他社交網(wǎng)站,非常方便。
下面就讓我們來(lái)探究一下其中的奧秘。
1.注冊開(kāi)發(fā)者,獲取app key和app secret
百度可以輕松找到微博開(kāi)放平臺的入口,登錄微博賬號,點(diǎn)擊賬號頭像,會(huì )提示編輯開(kāi)發(fā)者信息。
可以看到如下頁(yè)面,按照提示填寫(xiě)即可,緊急聯(lián)系人可以自己填寫(xiě),網(wǎng)站無(wú)所謂,自己填寫(xiě)百度即可。
提交后,您需要在我的應用程序中驗證您的真實(shí)姓名。上傳圖片時(shí)請耐心等待。有點(diǎn)慢,沒(méi)有上傳進(jìn)度。上傳后,點(diǎn)擊返回跳轉到新頁(yè)面:
根據您的需要選擇,然后創(chuàng )建您自己的應用程序。至于各個(gè)應用術(shù)語(yǔ)的含義,我不是很清楚。我選擇了其他應用
創(chuàng )建后,您將收到一封收錄應用密鑰和應用機密的電子郵件。這是獲得授權的關(guān)鍵。
2.獲取令牌
在首頁(yè)點(diǎn)擊api接口,會(huì )跳轉到api接口文檔頁(yè)面。你會(huì )發(fā)現這個(gè)api有很多功能,包括創(chuàng )建微博、刪除微博、關(guān)注/取消關(guān)注等很多接口,但是每個(gè)接口都需要一個(gè)token才能訪(fǎng)問(wèn)。令牌從哪里來(lái)?
一是要拿到code,二是要有調用接口的網(wǎng)址(因為我申請的是web應用)。
設置關(guān)聯(lián)的 URL:
單擊您的應用程序名稱(chēng),然后在左側菜單中找到高級信息,然后您可以對其進(jìn)行編輯。
在api界面下點(diǎn)擊
, 進(jìn)入授權界面查看使用情況
根據示例,您需要發(fā)送收錄 client_id 和 redirect_uri 的 get 請求??梢灾苯悠唇?。
https://api.weibo.com/oauth2/a ... Dcode
其中client_id是你申請的app key,redirect_uri是你要回調的接口地址,api會(huì )原樣返回??梢灾苯釉跒g覽器中輸入url,如下圖:
這個(gè)頁(yè)面是不是很熟悉?授權后網(wǎng)頁(yè)會(huì )跳轉回redirect_uri頁(yè)面,url后面會(huì )寫(xiě)code。所以代碼在那里
接下來(lái)獲取授權token,第二個(gè)授權接口:
頁(yè)面上有詳細的用法,發(fā)送http post請求,我是用java http-client4.5來(lái)做的,其實(shí)其他方法也可以。
代碼寫(xiě)得不好,但多少有用。5 個(gè)必需的參數值。我們已經(jīng)拿到了最后兩個(gè),前兩個(gè)在郵件里。代碼將不會(huì )發(fā)布。打理好自己的打字,會(huì )幫助你熟悉用法,以后難免會(huì )提出各種要求。
至此,我們已經(jīng)授權成功,返回值中就是需要的token值了。如果返回錯誤,請查看錯誤信息或百度錯誤信息。
之后,您只需要帶上令牌來(lái)請求各種接口。雖然有次數限制,但正常使用應該足夠了。
后記:
1. 本來(lái)想做一些爬蟲(chóng)類(lèi)的功能。我想在微博開(kāi)放界面獲取一些數據。不過(guò)從API來(lái)看,大部分都是基于web應用的微博分享功能。
比如自己的微博、粉絲、發(fā)微博、關(guān)注等,都不是你需要的。
2. 前面說(shuō)過(guò),微博開(kāi)放api主要是第三方網(wǎng)站或者app用來(lái)訪(fǎng)問(wèn)微博,用微博登錄或者通過(guò)api分享微博,所以這方面是完全需要的您可以深入研究 api 接口。
在3.api接口中,所有的get請求都可以通過(guò)直接拼接字符串的方式獲取,但是對于剛剛請求授權的get請求,需要用戶(hù)的賬號同意向應用授權,所以必須登錄用戶(hù)帳戶(hù)。如果瀏覽器保留了微博登錄的cookie,那么瀏覽器可以自動(dòng)登錄獲取目標碼,如果沒(méi)有會(huì )提示登錄
所以這個(gè)請求適合在瀏覽器上做,因為發(fā)送帶有代碼的請求模擬登錄,或者登錄后使用cookies都非常麻煩。但是api中的其他get請求不會(huì )有這個(gè)問(wèn)題,直接帶上token就可以了。模擬登錄可以使用selenium的webdriver來(lái)獲取cookies。其他模擬登錄的方法一般都很麻煩。
當然,如果你把它嵌入到網(wǎng)站上,那么登錄是用戶(hù)的事。
4.以發(fā)送微博為例:
@Test
public void test2() throws IOException {
CloseableHttpClient client = HttpClients.createDefault();
CloseableHttpResponse response = null;
RequestConfig config =
RequestConfig.custom().setConnectTimeout(10000)
.setSocketTimeout(10000).build();
HttpPost post = new HttpPost("https://api.weibo.com/2/statuses/update.json");
post.setConfig(config);
List pairs = new ArrayList();
BasicNameValuePair p1 = new BasicNameValuePair("access_token","");
String content = "本條微博通過(guò)微博開(kāi)放接口發(fā)送";
BasicNameValuePair p2 = new BasicNameValuePair("status",
content);
BasicNameValuePair p3 = new BasicNameValuePair("visible","0");
pairs.add(p1);
pairs.add(p2);
pairs.add(p3);
post.setEntity(new UrlEncodedFormEntity(pairs,"utf-8"));
response = client.execute(post);
HttpEntity entities = response.getEntity();
System.out.println(EntityUtils.toString(entities,"UTF-8"));
}
5.如果自己把開(kāi)放的api嵌入到自己的網(wǎng)站中,一般的做法是:在分享微博按鈕(第三方登錄按鈕)上,發(fā)送微博授權認證,用戶(hù)點(diǎn)擊授權后web頁(yè)面,后臺獲取code,根據code獲取token。之后,如果您需要提取微博的用戶(hù)名,您可以直接在后臺發(fā)送請求。如果分享到微博,也可以通過(guò)api來(lái)完成。
如果以后在實(shí)踐中用到這些功能,請做好記錄。本文到此結束。
來(lái)自維茲 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺注冊開(kāi)發(fā)者并獲取app和appsecret百度很容易)
前言:微博開(kāi)放平臺提供了微博數據的api接口。不僅可以直接使用api調用微博服務(wù)發(fā)布微博和查詢(xún)微博,更重要的是可以通過(guò)自己的網(wǎng)站api授權獲取新浪微博,調用微博的一些內容,好像我們看到了在網(wǎng)站、文章想分享到微博或其他社交網(wǎng)站,非常方便。
下面就讓我們來(lái)探究一下其中的奧秘。
1.注冊開(kāi)發(fā)者,獲取app key和app secret
百度可以輕松找到微博開(kāi)放平臺的入口,登錄微博賬號,點(diǎn)擊賬號頭像,會(huì )提示編輯開(kāi)發(fā)者信息。

可以看到如下頁(yè)面,按照提示填寫(xiě)即可,緊急聯(lián)系人可以自己填寫(xiě),網(wǎng)站無(wú)所謂,自己填寫(xiě)百度即可。

提交后,您需要在我的應用程序中驗證您的真實(shí)姓名。上傳圖片時(shí)請耐心等待。有點(diǎn)慢,沒(méi)有上傳進(jìn)度。上傳后,點(diǎn)擊返回跳轉到新頁(yè)面:

根據您的需要選擇,然后創(chuàng )建您自己的應用程序。至于各個(gè)應用術(shù)語(yǔ)的含義,我不是很清楚。我選擇了其他應用


創(chuàng )建后,您將收到一封收錄應用密鑰和應用機密的電子郵件。這是獲得授權的關(guān)鍵。
2.獲取令牌
在首頁(yè)點(diǎn)擊api接口,會(huì )跳轉到api接口文檔頁(yè)面。你會(huì )發(fā)現這個(gè)api有很多功能,包括創(chuàng )建微博、刪除微博、關(guān)注/取消關(guān)注等很多接口,但是每個(gè)接口都需要一個(gè)token才能訪(fǎng)問(wèn)。令牌從哪里來(lái)?
一是要拿到code,二是要有調用接口的網(wǎng)址(因為我申請的是web應用)。
設置關(guān)聯(lián)的 URL:

單擊您的應用程序名稱(chēng),然后在左側菜單中找到高級信息,然后您可以對其進(jìn)行編輯。

在api界面下點(diǎn)擊

, 進(jìn)入授權界面查看使用情況

根據示例,您需要發(fā)送收錄 client_id 和 redirect_uri 的 get 請求??梢灾苯悠唇?。
https://api.weibo.com/oauth2/a ... Dcode
其中client_id是你申請的app key,redirect_uri是你要回調的接口地址,api會(huì )原樣返回??梢灾苯釉跒g覽器中輸入url,如下圖:

這個(gè)頁(yè)面是不是很熟悉?授權后網(wǎng)頁(yè)會(huì )跳轉回redirect_uri頁(yè)面,url后面會(huì )寫(xiě)code。所以代碼在那里
接下來(lái)獲取授權token,第二個(gè)授權接口:

頁(yè)面上有詳細的用法,發(fā)送http post請求,我是用java http-client4.5來(lái)做的,其實(shí)其他方法也可以。

代碼寫(xiě)得不好,但多少有用。5 個(gè)必需的參數值。我們已經(jīng)拿到了最后兩個(gè),前兩個(gè)在郵件里。代碼將不會(huì )發(fā)布。打理好自己的打字,會(huì )幫助你熟悉用法,以后難免會(huì )提出各種要求。
至此,我們已經(jīng)授權成功,返回值中就是需要的token值了。如果返回錯誤,請查看錯誤信息或百度錯誤信息。
之后,您只需要帶上令牌來(lái)請求各種接口。雖然有次數限制,但正常使用應該足夠了。
后記:
1. 本來(lái)想做一些爬蟲(chóng)類(lèi)的功能。我想在微博開(kāi)放界面獲取一些數據。不過(guò)從API來(lái)看,大部分都是基于web應用的微博分享功能。
比如自己的微博、粉絲、發(fā)微博、關(guān)注等,都不是你需要的。

2. 前面說(shuō)過(guò),微博開(kāi)放api主要是第三方網(wǎng)站或者app用來(lái)訪(fǎng)問(wèn)微博,用微博登錄或者通過(guò)api分享微博,所以這方面是完全需要的您可以深入研究 api 接口。
在3.api接口中,所有的get請求都可以通過(guò)直接拼接字符串的方式獲取,但是對于剛剛請求授權的get請求,需要用戶(hù)的賬號同意向應用授權,所以必須登錄用戶(hù)帳戶(hù)。如果瀏覽器保留了微博登錄的cookie,那么瀏覽器可以自動(dòng)登錄獲取目標碼,如果沒(méi)有會(huì )提示登錄

所以這個(gè)請求適合在瀏覽器上做,因為發(fā)送帶有代碼的請求模擬登錄,或者登錄后使用cookies都非常麻煩。但是api中的其他get請求不會(huì )有這個(gè)問(wèn)題,直接帶上token就可以了。模擬登錄可以使用selenium的webdriver來(lái)獲取cookies。其他模擬登錄的方法一般都很麻煩。
當然,如果你把它嵌入到網(wǎng)站上,那么登錄是用戶(hù)的事。
4.以發(fā)送微博為例:
@Test
public void test2() throws IOException {
CloseableHttpClient client = HttpClients.createDefault();
CloseableHttpResponse response = null;
RequestConfig config =
RequestConfig.custom().setConnectTimeout(10000)
.setSocketTimeout(10000).build();
HttpPost post = new HttpPost("https://api.weibo.com/2/statuses/update.json");
post.setConfig(config);
List pairs = new ArrayList();
BasicNameValuePair p1 = new BasicNameValuePair("access_token","");
String content = "本條微博通過(guò)微博開(kāi)放接口發(fā)送";
BasicNameValuePair p2 = new BasicNameValuePair("status",
content);
BasicNameValuePair p3 = new BasicNameValuePair("visible","0");
pairs.add(p1);
pairs.add(p2);
pairs.add(p3);
post.setEntity(new UrlEncodedFormEntity(pairs,"utf-8"));
response = client.execute(post);
HttpEntity entities = response.getEntity();
System.out.println(EntityUtils.toString(entities,"UTF-8"));
}

5.如果自己把開(kāi)放的api嵌入到自己的網(wǎng)站中,一般的做法是:在分享微博按鈕(第三方登錄按鈕)上,發(fā)送微博授權認證,用戶(hù)點(diǎn)擊授權后web頁(yè)面,后臺獲取code,根據code獲取token。之后,如果您需要提取微博的用戶(hù)名,您可以直接在后臺發(fā)送請求。如果分享到微博,也可以通過(guò)api來(lái)完成。
如果以后在實(shí)踐中用到這些功能,請做好記錄。本文到此結束。
來(lái)自維茲
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺API調用和TWITTER接口一樣的限定規則)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 71 次瀏覽 ? 2021-10-10 10:29
新浪微博開(kāi)放平臺API調用與TWITTER接口相同,有時(shí)間限制和限制。
他有兩個(gè)限制原則
1.用戶(hù)不基于IP限制登錄,每小時(shí)1000次
2. 用戶(hù)以基于用戶(hù)的限制登錄,每小時(shí)1000次
如果應用是用戶(hù)未登錄,則IP被限制。建議登錄破解瓶頸,否則不討論。
新浪給出了具體限制
開(kāi)發(fā)者可以通過(guò) rate_limit_status 接口查看調用頻率
rate_limit_status 接口文檔
接口返回如下信息
數組([remaining_hits] => 999 [hourly_limit] => 1000 [reset_time_in_seconds] => 2717 [reset_time] => 12 月 14 日星期二 17:00:00 +0800 2010)
代表
剩余數量為999次,
每小時(shí)限制1000次,
計數器復位的剩余時(shí)間為 2717 秒,
下次重置時(shí)間為 17:00。
對于小型非授權應用程序,這樣的調用頻率已不再足夠。最簡(jiǎn)單的方法是使用多個(gè)賬號和多個(gè)APP_KEY,相當于做一個(gè)賬號輪詢(xún)。
首先,多注冊幾個(gè)微博賬號,存儲在一個(gè)數組中,每次隨機調用一個(gè),這樣可以輕松達到3000個(gè)。
$wb_id = array('|password','|password','|password');
列表($wb_name,$wb_password)=explode(“|”,$wb_id[array_rand($wb_id)]);
如果用同樣的方法列出幾個(gè)APP_KEY,重復組合,就會(huì )更多。比如2個(gè)APP_KEY,3個(gè)賬號,上限可以達到6000。
我個(gè)人用了3個(gè)APP_KEY,4個(gè)賬號,每小時(shí)1.20000的量就夠了。
另一種快速注冊微博賬號的方法
第一步,
去gmail注冊一個(gè)長(cháng)賬號,多長(cháng)時(shí)間?反正越長(cháng)越好,一個(gè)原則信比你想注冊的微博賬號長(cháng)
例如
第二步,
使用此賬號注冊新浪
第一次使用
第二次使用
第三次使用
....
以此類(lèi)推,一個(gè)郵箱可以注冊多個(gè)新浪微博。無(wú)需來(lái)回重新注冊郵箱。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(新浪微博開(kāi)放平臺API調用和TWITTER接口一樣的限定規則)
新浪微博開(kāi)放平臺API調用與TWITTER接口相同,有時(shí)間限制和限制。
他有兩個(gè)限制原則
1.用戶(hù)不基于IP限制登錄,每小時(shí)1000次
2. 用戶(hù)以基于用戶(hù)的限制登錄,每小時(shí)1000次
如果應用是用戶(hù)未登錄,則IP被限制。建議登錄破解瓶頸,否則不討論。
新浪給出了具體限制
開(kāi)發(fā)者可以通過(guò) rate_limit_status 接口查看調用頻率
rate_limit_status 接口文檔
接口返回如下信息
數組([remaining_hits] => 999 [hourly_limit] => 1000 [reset_time_in_seconds] => 2717 [reset_time] => 12 月 14 日星期二 17:00:00 +0800 2010)
代表
剩余數量為999次,
每小時(shí)限制1000次,
計數器復位的剩余時(shí)間為 2717 秒,
下次重置時(shí)間為 17:00。
對于小型非授權應用程序,這樣的調用頻率已不再足夠。最簡(jiǎn)單的方法是使用多個(gè)賬號和多個(gè)APP_KEY,相當于做一個(gè)賬號輪詢(xún)。
首先,多注冊幾個(gè)微博賬號,存儲在一個(gè)數組中,每次隨機調用一個(gè),這樣可以輕松達到3000個(gè)。
$wb_id = array('|password','|password','|password');
列表($wb_name,$wb_password)=explode(“|”,$wb_id[array_rand($wb_id)]);
如果用同樣的方法列出幾個(gè)APP_KEY,重復組合,就會(huì )更多。比如2個(gè)APP_KEY,3個(gè)賬號,上限可以達到6000。
我個(gè)人用了3個(gè)APP_KEY,4個(gè)賬號,每小時(shí)1.20000的量就夠了。
另一種快速注冊微博賬號的方法
第一步,
去gmail注冊一個(gè)長(cháng)賬號,多長(cháng)時(shí)間?反正越長(cháng)越好,一個(gè)原則信比你想注冊的微博賬號長(cháng)
例如
第二步,
使用此賬號注冊新浪
第一次使用
第二次使用
第三次使用
....
以此類(lèi)推,一個(gè)郵箱可以注冊多個(gè)新浪微博。無(wú)需來(lái)回重新注冊郵箱。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺(api同步微博內容至自己網(wǎng)站))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 69 次瀏覽 ? 2021-10-09 08:04
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站新浪微博關(guān)注</a>
前端把微博的鏈接請求發(fā)給后端服務(wù)器,會(huì )返回轉發(fā)的url,服務(wù)器根據url里的id把這條微博轉發(fā)給相應的網(wǎng)站。例如:微博用戶(hù)頁(yè),微博轉發(fā)頁(yè)面url=""//新浪微博轉發(fā)微博鏈接headerhref=""//新浪微博自定義地址sign="text/html,application/xhtml+xml,application/xml;q=0.9"//后端headerdata={"user-agent":"mozilla/5.0(windowsnt10.0;win64;x6。
4)applewebkit/537.36(khtml,likegecko)chrome/74.0.3033.110safari/537.36","ispublishers":"keep-alive","mms":"5.0"}
新浪官方做了一個(gè)可以對新浪微博中鏈接進(jìn)行互訪(fǎng)的api,很有用,我寫(xiě)了一個(gè)專(zhuān)門(mén)用于新浪微博互訪(fǎng)的web框架,
這個(gè)可以實(shí)現,先把新浪微博的數據抓到,然后微博數據庫中查出微博地址轉發(fā)給相應網(wǎng)站,然后轉發(fā)到自己的網(wǎng)站上。
剛遇到,使用互聯(lián)網(wǎng)開(kāi)放平臺(api),然后后端轉發(fā)給對應網(wǎng)站。開(kāi)放平臺把數據流轉發(fā)給對應網(wǎng)站的服務(wù)器,再由對應網(wǎng)站服務(wù)器再把數據轉發(fā)給后端。
通過(guò)流分析收集微博內容,然后直接通過(guò)爬蟲(chóng)抓取過(guò)來(lái)。
1、excel或者powerbi做流程圖;
2、用網(wǎng)頁(yè)版新浪提供; 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺(api同步微博內容至自己網(wǎng)站))
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站新浪微博關(guān)注</a>
前端把微博的鏈接請求發(fā)給后端服務(wù)器,會(huì )返回轉發(fā)的url,服務(wù)器根據url里的id把這條微博轉發(fā)給相應的網(wǎng)站。例如:微博用戶(hù)頁(yè),微博轉發(fā)頁(yè)面url=""//新浪微博轉發(fā)微博鏈接headerhref=""//新浪微博自定義地址sign="text/html,application/xhtml+xml,application/xml;q=0.9"//后端headerdata={"user-agent":"mozilla/5.0(windowsnt10.0;win64;x6。
4)applewebkit/537.36(khtml,likegecko)chrome/74.0.3033.110safari/537.36","ispublishers":"keep-alive","mms":"5.0"}
新浪官方做了一個(gè)可以對新浪微博中鏈接進(jìn)行互訪(fǎng)的api,很有用,我寫(xiě)了一個(gè)專(zhuān)門(mén)用于新浪微博互訪(fǎng)的web框架,
這個(gè)可以實(shí)現,先把新浪微博的數據抓到,然后微博數據庫中查出微博地址轉發(fā)給相應網(wǎng)站,然后轉發(fā)到自己的網(wǎng)站上。
剛遇到,使用互聯(lián)網(wǎng)開(kāi)放平臺(api),然后后端轉發(fā)給對應網(wǎng)站。開(kāi)放平臺把數據流轉發(fā)給對應網(wǎng)站的服務(wù)器,再由對應網(wǎng)站服務(wù)器再把數據轉發(fā)給后端。
通過(guò)流分析收集微博內容,然后直接通過(guò)爬蟲(chóng)抓取過(guò)來(lái)。
1、excel或者powerbi做流程圖;
2、用網(wǎng)頁(yè)版新浪提供;
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(圖))
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 60 次瀏覽 ? 2021-10-06 10:03
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站,方便所有中文字體開(kāi)發(fā)者使用。
開(kāi)放平臺不了解,不過(guò)我聽(tīng)說(shuō)可以用apilink,國內比較領(lǐng)先的文字轉引擎,支持的場(chǎng)景還是蠻多的,
可以關(guān)注下“simplemouse”這款app,主要用來(lái)做文字轉,
微博開(kāi)放平臺::。
有一個(gè)功能叫智能轉換,可以達到所有人都可以使用,在googlereader里面登錄賬號,并授權,那么別人無(wú)論是手機端,還是網(wǎng)頁(yè)端,只要有相同的標題,在閱讀過(guò)程中,都可以收聽(tīng)你的內容。實(shí)現方法:登錄谷歌reader賬號,添加賬號,當前用戶(hù)是可以直接直接登錄谷歌reader里面的賬號的,同理,所有用戶(hù)也都可以登錄同一個(gè)賬號。
打開(kāi)readitlater,新建文章,同一標題,同一內容,系統就會(huì )自動(dòng)收聽(tīng)你的音頻,省去你登錄多個(gè)賬號的步驟。音頻的長(cháng)度:所有未經(jīng)過(guò)長(cháng)短號轉換的全免費音頻,可以無(wú)限制的轉換。音頻的音量:音量是60即可,自己可以調節。轉換之后文章不會(huì )加長(cháng)或者減短。上傳音頻:文章上傳的時(shí)候,選擇文章文件大小,選擇輸出比特率,這樣音頻會(huì )根據你電腦是網(wǎng)絡(luò )過(guò)載還是網(wǎng)絡(luò )不好調整成其他形式,只要你能拿到音頻長(cháng)度,并且實(shí)時(shí)收聽(tīng),基本上也是沒(méi)有任何問(wèn)題的。
所以我相信國內一定還有很多人都在用,畢竟谷歌reader目前已經(jīng)極度完善的情況下,還有那么多的問(wèn)題,確實(shí)也有必要好好思考一下。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(圖))
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站,方便所有中文字體開(kāi)發(fā)者使用。
開(kāi)放平臺不了解,不過(guò)我聽(tīng)說(shuō)可以用apilink,國內比較領(lǐng)先的文字轉引擎,支持的場(chǎng)景還是蠻多的,
可以關(guān)注下“simplemouse”這款app,主要用來(lái)做文字轉,
微博開(kāi)放平臺::。
有一個(gè)功能叫智能轉換,可以達到所有人都可以使用,在googlereader里面登錄賬號,并授權,那么別人無(wú)論是手機端,還是網(wǎng)頁(yè)端,只要有相同的標題,在閱讀過(guò)程中,都可以收聽(tīng)你的內容。實(shí)現方法:登錄谷歌reader賬號,添加賬號,當前用戶(hù)是可以直接直接登錄谷歌reader里面的賬號的,同理,所有用戶(hù)也都可以登錄同一個(gè)賬號。
打開(kāi)readitlater,新建文章,同一標題,同一內容,系統就會(huì )自動(dòng)收聽(tīng)你的音頻,省去你登錄多個(gè)賬號的步驟。音頻的長(cháng)度:所有未經(jīng)過(guò)長(cháng)短號轉換的全免費音頻,可以無(wú)限制的轉換。音頻的音量:音量是60即可,自己可以調節。轉換之后文章不會(huì )加長(cháng)或者減短。上傳音頻:文章上傳的時(shí)候,選擇文章文件大小,選擇輸出比特率,這樣音頻會(huì )根據你電腦是網(wǎng)絡(luò )過(guò)載還是網(wǎng)絡(luò )不好調整成其他形式,只要你能拿到音頻長(cháng)度,并且實(shí)時(shí)收聽(tīng),基本上也是沒(méi)有任何問(wèn)題的。
所以我相信國內一定還有很多人都在用,畢竟谷歌reader目前已經(jīng)極度完善的情況下,還有那么多的問(wèn)題,確實(shí)也有必要好好思考一下。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(初涉外網(wǎng)資源的互聯(lián)網(wǎng)系統摸索了很長(cháng)時(shí)間無(wú)力吐槽)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 91 次瀏覽 ? 2021-10-04 11:28
最近一直在做利用三方資源的事情。由于之前做企業(yè)管理(ERP)內網(wǎng)系統,我一直在探索涉及外網(wǎng)資源的互聯(lián)網(wǎng)系統。
對于網(wǎng)上泛濫的各種教程,我實(shí)在是無(wú)力吐槽。決定分享一下這段時(shí)間遇到的各種問(wèn)題和相應的解決方法。教程分為兩個(gè)階段:一是賬號登錄,二是三方賬號和本地賬號的綁定。放心,一定和代碼級別一樣好。
第 1 部分:三方登錄:
1. 新浪微博開(kāi)放平臺要做的事情:
請耐心閱讀,一步一步操作,如圖:
?、龠M(jìn)入
?、谠谖⑦B接中選擇“網(wǎng)站訪(fǎng)問(wèn)”:
?、圻x擇立即連接:
請注意,如果您此時(shí)未登錄,或登錄后微博檢測到您不是開(kāi)發(fā)者,請填寫(xiě)并查看開(kāi)發(fā)者信息。審核會(huì )很快,點(diǎn)擊后即可通過(guò)驗證(身份驗證)
?、芴顚?xiě)網(wǎng)站信息,然后在你的網(wǎng)站主頁(yè)添加標記,本地添加成功后(在eclipse等開(kāi)發(fā)ide中添加到項目主頁(yè)),然后重新發(fā)布到你自己的服務(wù)器,(你可以重新打包成war包發(fā)布到網(wǎng)上,比如我用的是騰訊的阿里云主機)。確認以上步驟完成后,點(diǎn)擊“驗證并添加”,微博中的某段代碼會(huì )自動(dòng)讀取你在項目首頁(yè)添加的header,如果有則驗證成功。
?、萁?jīng)過(guò)以上過(guò)程,你的網(wǎng)站已經(jīng)添加成功。這時(shí)候微博會(huì )發(fā)給你你的網(wǎng)站的appKey,(appkey)是你的網(wǎng)站的唯一標識。
查找您自己的 appkey,如下所示:
點(diǎn)擊我的申請:
這時(shí)候會(huì )有appkey的值,你肯定會(huì )看到
完成這些步驟后,請設置您的授權回調頁(yè)面:
解釋
1.授權回調頁(yè)面是用戶(hù)登錄到您使用微博賬號訪(fǎng)問(wèn)過(guò)的網(wǎng)站(您的網(wǎng)站首頁(yè))后,會(huì )收到用戶(hù)個(gè)人openID和accessToken的頁(yè)面或其他頁(yè)面)
2. 通俗地說(shuō),就是用戶(hù)在成功授權你的應用后(登錄成功后)被重定向到的頁(yè)面。
設置如下
點(diǎn)擊上圖中的界面管理:
然后點(diǎn)擊授權機制,右側頁(yè)面有授權回調頁(yè)面的設置:
點(diǎn)擊編輯,切換到自己的網(wǎng)站首頁(yè)或對應的授權回調頁(yè)面。(如:(優(yōu)雅的restful url))等。
這時(shí)候網(wǎng)站的申請已經(jīng)完成了,騷年,開(kāi)始寫(xiě)代碼。
在你的主頁(yè)或登錄界面設置登錄按鈕,這里我們選擇后者(僅用于測試,真正的開(kāi)發(fā)應該在首頁(yè)顯示登錄按鈕,點(diǎn)擊登錄按鈕后,頁(yè)面跳轉到登錄界面,有登錄按鈕新浪微博)注意微博有登錄組件,這里我們使用自定義按鈕:
進(jìn)行如下操作:
?、? 在 weibo.js 中引入
appkey=寫(xiě)你的應用密鑰網(wǎng)站。
?、? 設置您的登錄按鈕
?、? 在微博登錄按鈕上設置一個(gè) οnclick="weibologin()" 事件:
?、芫帉?xiě)用戶(hù)授權登錄和綁定的js代碼:
隱藏表單如下所示:
spring 安全框架用于用戶(hù)認證和授權。
基本上就是這樣。我相信那些想做這件事的人也知道 Ajax。因為后端代碼比較保密,不能寫(xiě)。ajax請求對應的服務(wù)端處理代碼,請自行完成,基本流程是這樣的,有不懂的請留言::1061328217
一切平安。 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(初涉外網(wǎng)資源的互聯(lián)網(wǎng)系統摸索了很長(cháng)時(shí)間無(wú)力吐槽)
最近一直在做利用三方資源的事情。由于之前做企業(yè)管理(ERP)內網(wǎng)系統,我一直在探索涉及外網(wǎng)資源的互聯(lián)網(wǎng)系統。
對于網(wǎng)上泛濫的各種教程,我實(shí)在是無(wú)力吐槽。決定分享一下這段時(shí)間遇到的各種問(wèn)題和相應的解決方法。教程分為兩個(gè)階段:一是賬號登錄,二是三方賬號和本地賬號的綁定。放心,一定和代碼級別一樣好。
第 1 部分:三方登錄:
1. 新浪微博開(kāi)放平臺要做的事情:
請耐心閱讀,一步一步操作,如圖:
?、龠M(jìn)入
?、谠谖⑦B接中選擇“網(wǎng)站訪(fǎng)問(wèn)”:
?、圻x擇立即連接:
請注意,如果您此時(shí)未登錄,或登錄后微博檢測到您不是開(kāi)發(fā)者,請填寫(xiě)并查看開(kāi)發(fā)者信息。審核會(huì )很快,點(diǎn)擊后即可通過(guò)驗證(身份驗證)
?、芴顚?xiě)網(wǎng)站信息,然后在你的網(wǎng)站主頁(yè)添加標記,本地添加成功后(在eclipse等開(kāi)發(fā)ide中添加到項目主頁(yè)),然后重新發(fā)布到你自己的服務(wù)器,(你可以重新打包成war包發(fā)布到網(wǎng)上,比如我用的是騰訊的阿里云主機)。確認以上步驟完成后,點(diǎn)擊“驗證并添加”,微博中的某段代碼會(huì )自動(dòng)讀取你在項目首頁(yè)添加的header,如果有則驗證成功。
?、萁?jīng)過(guò)以上過(guò)程,你的網(wǎng)站已經(jīng)添加成功。這時(shí)候微博會(huì )發(fā)給你你的網(wǎng)站的appKey,(appkey)是你的網(wǎng)站的唯一標識。
查找您自己的 appkey,如下所示:
點(diǎn)擊我的申請:
這時(shí)候會(huì )有appkey的值,你肯定會(huì )看到
完成這些步驟后,請設置您的授權回調頁(yè)面:
解釋
1.授權回調頁(yè)面是用戶(hù)登錄到您使用微博賬號訪(fǎng)問(wèn)過(guò)的網(wǎng)站(您的網(wǎng)站首頁(yè))后,會(huì )收到用戶(hù)個(gè)人openID和accessToken的頁(yè)面或其他頁(yè)面)
2. 通俗地說(shuō),就是用戶(hù)在成功授權你的應用后(登錄成功后)被重定向到的頁(yè)面。
設置如下
點(diǎn)擊上圖中的界面管理:
然后點(diǎn)擊授權機制,右側頁(yè)面有授權回調頁(yè)面的設置:
點(diǎn)擊編輯,切換到自己的網(wǎng)站首頁(yè)或對應的授權回調頁(yè)面。(如:(優(yōu)雅的restful url))等。
這時(shí)候網(wǎng)站的申請已經(jīng)完成了,騷年,開(kāi)始寫(xiě)代碼。
在你的主頁(yè)或登錄界面設置登錄按鈕,這里我們選擇后者(僅用于測試,真正的開(kāi)發(fā)應該在首頁(yè)顯示登錄按鈕,點(diǎn)擊登錄按鈕后,頁(yè)面跳轉到登錄界面,有登錄按鈕新浪微博)注意微博有登錄組件,這里我們使用自定義按鈕:
進(jìn)行如下操作:
?、? 在 weibo.js 中引入
appkey=寫(xiě)你的應用密鑰網(wǎng)站。
?、? 設置您的登錄按鈕
?、? 在微博登錄按鈕上設置一個(gè) οnclick="weibologin()" 事件:
?、芫帉?xiě)用戶(hù)授權登錄和綁定的js代碼:
隱藏表單如下所示:
spring 安全框架用于用戶(hù)認證和授權。
基本上就是這樣。我相信那些想做這件事的人也知道 Ajax。因為后端代碼比較保密,不能寫(xiě)。ajax請求對應的服務(wù)端處理代碼,請自行完成,基本流程是這樣的,有不懂的請留言::1061328217
一切平安。
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(通過(guò)新浪微博API生成短鏈接,支持一次性轉多個(gè)長(cháng)鏈接)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 103 次瀏覽 ? 2021-10-04 08:40
通過(guò)新浪微博API生成短鏈接,同時(shí)支持多個(gè)長(cháng)鏈接。什么是短鏈接 短鏈接,通俗的講就是通過(guò)程序計算將長(cháng)網(wǎng)址網(wǎng)址轉換為短網(wǎng)址字符串。短鏈接服務(wù)
國內各大微博都推出了自己的短鏈接服務(wù)。比如新浪微博、騰訊微博等。
為什么選擇新浪微博API新浪微博短鏈接API是開(kāi)放的 新浪微博短鏈接API不需要用戶(hù)登錄文檔查詢(xún)鏈接使用方法
拿到自己的AppKey后,只需替換類(lèi)的成員屬性$appKey的值即可,如下圖,$shortUrl為API請求地址
// APPkey,我在網(wǎng)上找的(https://fengmk2.com/blog/appkey.html),可以自己申請
protected $appKey = '569452181';
// 轉短連接API地址
protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';
其他的,基本不需要配置,直接實(shí)例化類(lèi)ShortLink,然后調用getShortUrl方法,需要注意的是長(cháng)鏈接URL數組$longUrl中的值可以傳多個(gè)值
當然,為了方便,我把它寫(xiě)成一個(gè)類(lèi),可以根據自己的需要進(jìn)行調整,滿(mǎn)足自己的需求。
源代碼
<p> 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(通過(guò)新浪微博API生成短鏈接,支持一次性轉多個(gè)長(cháng)鏈接)
通過(guò)新浪微博API生成短鏈接,同時(shí)支持多個(gè)長(cháng)鏈接。什么是短鏈接 短鏈接,通俗的講就是通過(guò)程序計算將長(cháng)網(wǎng)址網(wǎng)址轉換為短網(wǎng)址字符串。短鏈接服務(wù)
國內各大微博都推出了自己的短鏈接服務(wù)。比如新浪微博、騰訊微博等。
為什么選擇新浪微博API新浪微博短鏈接API是開(kāi)放的 新浪微博短鏈接API不需要用戶(hù)登錄文檔查詢(xún)鏈接使用方法
拿到自己的AppKey后,只需替換類(lèi)的成員屬性$appKey的值即可,如下圖,$shortUrl為API請求地址
// APPkey,我在網(wǎng)上找的(https://fengmk2.com/blog/appkey.html),可以自己申請
protected $appKey = '569452181';
// 轉短連接API地址
protected $shortUrl = 'https://api.weibo.com/2/short_url/shorten.json?';
其他的,基本不需要配置,直接實(shí)例化類(lèi)ShortLink,然后調用getShortUrl方法,需要注意的是長(cháng)鏈接URL數組$longUrl中的值可以傳多個(gè)值
當然,為了方便,我把它寫(xiě)成一個(gè)類(lèi),可以根據自己的需要進(jìn)行調整,滿(mǎn)足自己的需求。
源代碼
<p>
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺創(chuàng )建應用的詳細流程及應用)
網(wǎng)站優(yōu)化 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 333 次瀏覽 ? 2021-10-04 08:34
一、準備。
1. 微博賬號。注冊很容易。
2.微博賬號成為開(kāi)發(fā)者。
登錄微博開(kāi)放平臺登錄您的注冊賬號,然后進(jìn)入管理中心完成開(kāi)發(fā)者基本信息和身份認證。
這時(shí)候還需要瀏覽微博開(kāi)放平臺的文檔,了解這個(gè)開(kāi)放平臺的一些規范術(shù)語(yǔ)。
單擊每個(gè)鏈接進(jìn)行查看。順便看一下微博API文檔,里面有介紹,有些接口調用需要獲取access_token。這篇文章就是為了達到這個(gè)目的。
二、創(chuàng )建一個(gè)應用程序。
比如我們要開(kāi)發(fā)一個(gè)網(wǎng)站,然后在這個(gè)網(wǎng)站中連接微博開(kāi)放平臺,調用開(kāi)放平臺的接口。然后我們需要在登錄微博開(kāi)放平臺后創(chuàng )建一個(gè)應用。
創(chuàng )建應用程序后,您將獲得應用程序的 App key 和 AppSecret。然后我們就是利用這個(gè)信息調用新浪微博的auth2.0認證獲取access_token。
拿到access_token后,我們就可以調用我們需要的接口了,比如發(fā)微博等。
1. 創(chuàng )建引用的地方。開(kāi)放平臺--》點(diǎn)擊上方導航菜單中的“微鏈接”,這里的微鏈接的概念也是這個(gè)開(kāi)放平臺的一個(gè)術(shù)語(yǔ),具體含義可以查看相關(guān)文檔。
2.創(chuàng )建什么類(lèi)型的應用程序?
隨意看看你的情況。測試時(shí),您可以創(chuàng )建任何東西,嘗試并充滿(mǎn)信心地去做。我創(chuàng )建的是一個(gè)網(wǎng)頁(yè)參考,所以我發(fā)現它很容易輸入,不需要填寫(xiě)太多信息。
如下所示:
創(chuàng )建完成后,可以在我的應用中看到:
單擊以查看與應用程序相關(guān)的信息。一會(huì )兒我們需要用到這里的app key和app secret,還需要配置應用授權回調地址。
三、下載微博開(kāi)發(fā)SDK。
開(kāi)發(fā)SDK中有一些示例,可以直接作為參考。下載鏈接。我下載了 weibo4j 的 Java 版本。下載后,我導入了開(kāi)發(fā)工具。如下所示:
代碼很多,不要慌,先在examples包下的oauth2包下找到OAuth4Code類(lèi)。我們需要運行這個(gè)類(lèi)。
這個(gè)類(lèi)完成oauth操作,這一步包括兩個(gè)請求
第一次:
https://api.weibo.com/oauth2/a ... Dcode
第二次:
https://api.weibo.com/oauth2/access_token
請注意,第一個(gè)請求中有一個(gè) client_id。這個(gè)參數需要在config.properties中配置,對應我們上面創(chuàng )建的應用的app key。
同樣,這個(gè)配置文件中有一個(gè)client_SERCRET,對應我們上面創(chuàng )建的應用的app sercret,復制進(jìn)去。
還有一個(gè)參數redirect_uri,比較關(guān)鍵。當我們運行OAuth4Code類(lèi)時(shí),第一次請求完成后,會(huì )回調這個(gè)地址,同時(shí)帶入一個(gè)code參數。
我們需要復制這個(gè)參數,在控制臺中輸入,然后回車(chē)。發(fā)起第二個(gè)請求,這個(gè)請求會(huì )返回我們需要的access_token。那么問(wèn)題來(lái)了,如何配置這個(gè)地址呢?
1. 在上面創(chuàng )建的參考中,找到接口管理--》授權機制也沒(méi)有配置回調地址的地方,填寫(xiě)即可。
2. 上面的鏈接應該在config.properties中配置,如下:
client_ID = 1234567890
client_SERCRET = 890a2ab550cf8d7a0090ff2f19850f3a
redirect_URI = https\://api.weibo.com/oauth2/default.html
baseURL=https://api.weibo.com/2/
accessTokenURL=https://api.weibo.com/oauth2/access_token
authorizeURL=https://api.weibo.com/oauth2/authorize
rmURL=https\://rm.api.weibo.com/2/
三、 運行程序獲取access_token。
上面第二步完成后,配置就完成了。運行以下類(lèi):
public class OAuth4Code {
public static void main(String [] args) throws WeiboException, IOException{
Oauth oauth = new Oauth();
BareBonesBrowserLaunch.openURL(oauth.authorize("code"));
System.out.println(oauth.authorize("code"));
System.out.print("Hit enter when it's done.[Enter]:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String code = br.readLine();
Log.logInfo("code: " + code);
try{
System.out.println(oauth.getAccessTokenByCode(code));
} catch (WeiboException e) {
if(401 == e.getStatusCode()){
Log.logInfo("Unable to get the access token.");
}else{
e.printStackTrace();
}
}
}
}
程序運行后,在控制臺輸入一行log后,進(jìn)入等待控制臺輸入的狀態(tài),瀏覽器立即打開(kāi)了一個(gè)頁(yè)面,跳轉后頁(yè)面變成了如下:
復制瀏覽器地址欄中的code參數值?;氐絤yeclipse,粘貼這個(gè)值,然后回車(chē)。程序繼續執行,使用這個(gè)code參數,再次發(fā)起請求,終于成功后就可以拿到access_token了
整個(gè)過(guò)程的效果日志:
四、本例中oauth授權流程總結。
兩次請求
第一次:
https://api.weibo.com/oauth2/a ... Dcode
同意授權后,會(huì )重定向:
//同意授權后會(huì )重定向
http://www.example.com/response&code=CODE
第二次:
按照上面的代碼再次發(fā)起請求。獲取 access_token
會(huì )有一些問(wèn)題,主要原因是授權地址配置不正確。根據本文中的示例配置,您可以成功運行程序。獲取 access_token。
錯誤代碼如下:
錯誤代碼(error) 錯誤代碼(error_code) 錯誤描述(error_description)
redirect_uri_mismatch
21322
重定向地址不匹配
無(wú)效請求
21323
請求是非法的
invalid_client
21324
client_id 或 client_secret 參數無(wú)效
invalid_grant
21325
提供的訪(fǎng)問(wèn)授權無(wú)效、已過(guò)期或已撤銷(xiāo)
未經(jīng)授權的客戶(hù)端
21326
客戶(hù)端沒(méi)有權限
expired_token
21327
令牌過(guò)期
unsupported_grant_type
21328
不支持的 GrantType
unsupported_response_type
21329
不支持的響應類(lèi)型
拒絕訪(fǎng)問(wèn)
21330
用戶(hù)或授權服務(wù)器拒絕授予數據訪(fǎng)問(wèn)權限
暫時(shí)不可用
21331
該服務(wù)暫時(shí)不可用
appkey權限被拒絕
21337
應用權限不足 查看全部
使用新浪微博開(kāi)放平臺api同步微博內容至自己網(wǎng)站(微博開(kāi)放平臺創(chuàng )建應用的詳細流程及應用)
一、準備。
1. 微博賬號。注冊很容易。
2.微博賬號成為開(kāi)發(fā)者。
登錄微博開(kāi)放平臺登錄您的注冊賬號,然后進(jìn)入管理中心完成開(kāi)發(fā)者基本信息和身份認證。
這時(shí)候還需要瀏覽微博開(kāi)放平臺的文檔,了解這個(gè)開(kāi)放平臺的一些規范術(shù)語(yǔ)。
單擊每個(gè)鏈接進(jìn)行查看。順便看一下微博API文檔,里面有介紹,有些接口調用需要獲取access_token。這篇文章就是為了達到這個(gè)目的。
二、創(chuàng )建一個(gè)應用程序。
比如我們要開(kāi)發(fā)一個(gè)網(wǎng)站,然后在這個(gè)網(wǎng)站中連接微博開(kāi)放平臺,調用開(kāi)放平臺的接口。然后我們需要在登錄微博開(kāi)放平臺后創(chuàng )建一個(gè)應用。
創(chuàng )建應用程序后,您將獲得應用程序的 App key 和 AppSecret。然后我們就是利用這個(gè)信息調用新浪微博的auth2.0認證獲取access_token。
拿到access_token后,我們就可以調用我們需要的接口了,比如發(fā)微博等。
1. 創(chuàng )建引用的地方。開(kāi)放平臺--》點(diǎn)擊上方導航菜單中的“微鏈接”,這里的微鏈接的概念也是這個(gè)開(kāi)放平臺的一個(gè)術(shù)語(yǔ),具體含義可以查看相關(guān)文檔。
2.創(chuàng )建什么類(lèi)型的應用程序?
隨意看看你的情況。測試時(shí),您可以創(chuàng )建任何東西,嘗試并充滿(mǎn)信心地去做。我創(chuàng )建的是一個(gè)網(wǎng)頁(yè)參考,所以我發(fā)現它很容易輸入,不需要填寫(xiě)太多信息。
如下所示:

創(chuàng )建完成后,可以在我的應用中看到:

單擊以查看與應用程序相關(guān)的信息。一會(huì )兒我們需要用到這里的app key和app secret,還需要配置應用授權回調地址。
三、下載微博開(kāi)發(fā)SDK。
開(kāi)發(fā)SDK中有一些示例,可以直接作為參考。下載鏈接。我下載了 weibo4j 的 Java 版本。下載后,我導入了開(kāi)發(fā)工具。如下所示:

代碼很多,不要慌,先在examples包下的oauth2包下找到OAuth4Code類(lèi)。我們需要運行這個(gè)類(lèi)。
這個(gè)類(lèi)完成oauth操作,這一步包括兩個(gè)請求
第一次:
https://api.weibo.com/oauth2/a ... Dcode
第二次:
https://api.weibo.com/oauth2/access_token
請注意,第一個(gè)請求中有一個(gè) client_id。這個(gè)參數需要在config.properties中配置,對應我們上面創(chuàng )建的應用的app key。
同樣,這個(gè)配置文件中有一個(gè)client_SERCRET,對應我們上面創(chuàng )建的應用的app sercret,復制進(jìn)去。
還有一個(gè)參數redirect_uri,比較關(guān)鍵。當我們運行OAuth4Code類(lèi)時(shí),第一次請求完成后,會(huì )回調這個(gè)地址,同時(shí)帶入一個(gè)code參數。
我們需要復制這個(gè)參數,在控制臺中輸入,然后回車(chē)。發(fā)起第二個(gè)請求,這個(gè)請求會(huì )返回我們需要的access_token。那么問(wèn)題來(lái)了,如何配置這個(gè)地址呢?
1. 在上面創(chuàng )建的參考中,找到接口管理--》授權機制也沒(méi)有配置回調地址的地方,填寫(xiě)即可。
2. 上面的鏈接應該在config.properties中配置,如下:
client_ID = 1234567890
client_SERCRET = 890a2ab550cf8d7a0090ff2f19850f3a
redirect_URI = https\://api.weibo.com/oauth2/default.html
baseURL=https://api.weibo.com/2/
accessTokenURL=https://api.weibo.com/oauth2/access_token
authorizeURL=https://api.weibo.com/oauth2/authorize
rmURL=https\://rm.api.weibo.com/2/
三、 運行程序獲取access_token。
上面第二步完成后,配置就完成了。運行以下類(lèi):
public class OAuth4Code {
public static void main(String [] args) throws WeiboException, IOException{
Oauth oauth = new Oauth();
BareBonesBrowserLaunch.openURL(oauth.authorize("code"));
System.out.println(oauth.authorize("code"));
System.out.print("Hit enter when it's done.[Enter]:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String code = br.readLine();
Log.logInfo("code: " + code);
try{
System.out.println(oauth.getAccessTokenByCode(code));
} catch (WeiboException e) {
if(401 == e.getStatusCode()){
Log.logInfo("Unable to get the access token.");
}else{
e.printStackTrace();
}
}
}
}
程序運行后,在控制臺輸入一行log后,進(jìn)入等待控制臺輸入的狀態(tài),瀏覽器立即打開(kāi)了一個(gè)頁(yè)面,跳轉后頁(yè)面變成了如下:

復制瀏覽器地址欄中的code參數值?;氐絤yeclipse,粘貼這個(gè)值,然后回車(chē)。程序繼續執行,使用這個(gè)code參數,再次發(fā)起請求,終于成功后就可以拿到access_token了
整個(gè)過(guò)程的效果日志:

四、本例中oauth授權流程總結。
兩次請求
第一次:
https://api.weibo.com/oauth2/a ... Dcode
同意授權后,會(huì )重定向:
//同意授權后會(huì )重定向
http://www.example.com/response&code=CODE
第二次:
按照上面的代碼再次發(fā)起請求。獲取 access_token
會(huì )有一些問(wèn)題,主要原因是授權地址配置不正確。根據本文中的示例配置,您可以成功運行程序。獲取 access_token。
錯誤代碼如下:
錯誤代碼(error) 錯誤代碼(error_code) 錯誤描述(error_description)
redirect_uri_mismatch
21322
重定向地址不匹配
無(wú)效請求
21323
請求是非法的
invalid_client
21324
client_id 或 client_secret 參數無(wú)效
invalid_grant
21325
提供的訪(fǎng)問(wèn)授權無(wú)效、已過(guò)期或已撤銷(xiāo)
未經(jīng)授權的客戶(hù)端
21326
客戶(hù)端沒(méi)有權限
expired_token
21327
令牌過(guò)期
unsupported_grant_type
21328
不支持的 GrantType
unsupported_response_type
21329
不支持的響應類(lèi)型
拒絕訪(fǎng)問(wèn)
21330
用戶(hù)或授權服務(wù)器拒絕授予數據訪(fǎng)問(wèn)權限
暫時(shí)不可用
21331
該服務(wù)暫時(shí)不可用
appkey權限被拒絕
21337
應用權限不足


