博客園OAuth2.0 授權及用戶登錄

于日前申請了博客園的API權限,經過一段時間研究,完成了Token獲取、刷新及用戶登錄基本功能的實現。

在進入主題之前先了解一下一個基礎但非常重要的知識grant_type:

authorization_code:授權碼模式(即先登錄獲取code,再獲取token)
password:密碼模式(將用戶名,密碼傳過去,直接獲取token)
client_credentials:客戶端模式(無用戶,用戶向客戶端注冊,然后客戶端以自己的名義向’服務端’獲取資源)
implicit:簡化模式(在redirect_uri 的Hash傳遞token; Auth客戶端運行在瀏覽器中,如JS,Flash)
refresh_token:刷新access_token

獲取Token

獲取token的url是https://api.cnblogs.com/token,此時grant_type取值應該為client_credentials,另外還需要client_id及client_secret。

調試方便,暫時使用postman進行模擬請求。

獲取 Token

需要說明的一點是,請求為POST,需要添加兩條header,分別是

Content-Type:application/x-www-form-urlencoded
Authorization:Basic .....

關于Authorization的計算規則,首先需要申請API權限,得到clientId和clientSecret,姜這兩這個值按照client_id:client_secret進行base64編碼,然后添加Basic即可。

得到的json結構是這個樣子:

{
    "access_token": "",
    "token_type": "bearer",
    "expires_in": 86399
}

可以看到,并沒有refresh_token字段。所以,當token過期的時候,應該怎么刷新呢,那對于這種情況,只能重新請求了。
至于如果刷新token,那就得先登錄才可以獲取到了。下面就講一下如何進行登錄,及主要事項。

用戶登錄

用戶登錄的header和獲取token沒有區別,不過grant_type取值為password,另外還需要提供用戶名及密碼。

用戶登錄

需要注意的是,用戶名和密碼需要進行RSA公鑰加密,然后進行base64編碼,至于公鑰,申請API權限的時候會有提供。
此時得到的json數據結構和上面有所不同:

{
    "access_token": " ",
    "token_type": "bearer",
    "expires_in": 86399,
    "refresh_token": " "
}

可以看到多了refresh_token字段,那么這種情況下,當token過期后,就可以使用refresh_token這種方式來獲取新的token,那如果refresh_token也過期的話,就只能重新登錄了。下面就簡單說明一下刷新token的流程。

刷新Token

根據登錄后返回的refresh_token,我們可以在token過期后,使用這個值來重新獲取token而無需重新登錄。

需要注意的是,header與之前有所不同,Authorization的值為 Bearer+access_token的值。另外grant_type取值為refresh_token,還需要post一個字段是refresh_token,也就是登錄時獲取的值。得到的json數據結構和登錄相同。

Content-Type:application/x-www-form-urlencoded
Authorization:Bearer .....

此文只是簡單介紹了一下博客園token獲取及刷新的基本邏輯及注意事項,也作拋磚引玉之用。后續會在Android平臺上實現一個簡單的實例。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,828評論 18 139
  • 過程都是一樣的: 第三方發起微信授權登錄請求,微信用戶允許授權第三方應用后,微信會拉起應用或重定向到第三方網站,并...
    米刀靈閱讀 2,964評論 0 1
  • 1. 引言 周末逛簡書,看了一篇寫的極好的文章,點擊大紅心點贊,就直接給我跳轉到登錄界面了,原來點贊是需要登錄的。...
    圣杰閱讀 4,402評論 3 83
  • 一、什么是OAuth2.0 官方網站:http://oauth.net/ http://oauth.net/2/ ...
    人類進化又沒帶我閱讀 8,102評論 0 3
  • OAuth是一個關于授權(authorization)的開放網絡標準,在全世界得到廣泛應用,目前的版本是2.0版。...
    謝謝寫閱讀 754評論 0 1