開發(fā)之前的準(zhǔn)備如下:
- 注冊新浪微博
- 訪問新浪微博開發(fā)平臺http://open.weibo.com,如果是企業(yè),申請企業(yè)接入,并提交相關(guān)資料進(jìn)行審核;如果是個人開發(fā)者,就請申請個人開發(fā)者應(yīng)用。
- 進(jìn)入http://open.weibo.com完善個人信息之后,必須還要做完身份認(rèn)證審核,審核完成之后,新浪開放平臺就會給出appkey和App Secret。
在開放平臺上創(chuàng)建應(yīng)用,(分移動應(yīng)用、網(wǎng)站應(yīng)用、游戲和其他產(chǎn)品)如下圖所示:
客戶端類型應(yīng)用申請如下:
web類型應(yīng)用申請如下:
- 填完信息,等待平臺審核通過后,拿到appkey和App Secret 還有之前準(zhǔn)備的redirect_URI回調(diào)地址(即平臺的登錄頁面)之后,即可接入微博登錄。
web端(h5)微博登錄
引導(dǎo)需要授權(quán)的用戶到如下地址:(請求用戶授權(quán)Token)
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
文檔請參照:https://open.weibo.com/wiki/Oauth2/authorize
請求方式:GET/POST
YOUR_CLIENT_ID ---->申請應(yīng)用時分配的AppKey。
YOUR_REGISTERED_REDIRECT_URI---->授權(quán)回調(diào)地址,站外應(yīng)用需與設(shè)置的回調(diào)地址一致,站內(nèi)應(yīng)用需填寫canvas page的地址。(一般為應(yīng)用登錄頁面)
如果用戶同意授權(quán),頁面跳轉(zhuǎn)至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE:
返回數(shù)據(jù)
返回值字段|字段類型|字段說明
--|:--:|--:
code|string|用于第二步調(diào)用oauth2/access_token接口,獲取授權(quán)后的access token。
state|string|如果傳遞參數(shù),會回傳該參數(shù)。(防止CSRF攻擊用的)
拿到上一步的code后,用code換取Access Token:
url
https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE
文檔請參照:https://open.weibo.com/wiki/Oauth2/access_token
請求方式:POST
YOUR_CLIENT_ID ---->申請應(yīng)用時分配的AppKey。
YOUR_CLIENT_SECRET---->申請應(yīng)用時分配的AppSecret。
YOUR_REGISTERED_REDIRECT_URI---->授權(quán)回調(diào)地址,站外應(yīng)用需與設(shè)置的回調(diào)地址一致,站內(nèi)應(yīng)用需填寫canvas page的地址。(一般為應(yīng)用登錄頁面)
返回數(shù)據(jù)
返回值字段|字段類型|字段說明
--|:--:|--:
access_token|string|用戶授權(quán)的唯一票據(jù),用于調(diào)用微博的開放接口,同時也是第三方應(yīng)用驗(yàn)證微博用戶登錄的唯一票據(jù),第三方應(yīng)用應(yīng)該用該票據(jù)和自己應(yīng)用內(nèi)的用戶建立唯一影射關(guān)系,來識別登錄狀態(tài),不能使用本返回值里的UID字段來做登錄識別。
expires_in|string|access_token的生命周期,單位是秒數(shù)。
uid|string|授權(quán)用戶的UID,本字段只是為了方便開發(fā)者,減少一次user/show接口調(diào)用而返回的,第三方應(yīng)用不能用此字段作為用戶登錄狀態(tài)的識別,只有access_token才是用戶授權(quán)的唯一票據(jù)。
根據(jù)用戶ID獲取用戶信息
https://api.weibo.com/2/users/show.json?access_token=token&uid=openId
參考文檔:https://open.weibo.com/wiki/2/users/show
請求方式:GET
access_token---->上一步獲取的access_token
uid---->上一步獲取的UID
- 拿到用戶信息后就可以將你需要的用戶信息注冊到你的項目的用戶表里,重點(diǎn)保存第5步得到的UID,下次用戶再用此賬號登錄時,到第6步后拿著第5步得到的UID查詢數(shù)據(jù)庫里是否存在,存在就不用再次注冊到數(shù)據(jù)庫,直接生成token,返回用戶數(shù)據(jù),登錄成功。
到此,微博登錄就結(jié)束了。具體文檔請參照:
微博api
https://open.weibo.com/wiki/微博API
嘿嘿嘿,劃重點(diǎn)了
看到網(wǎng)上有很多關(guān)于為什么access_token要設(shè)置過期時間的問題,此處以自己的理解解答一哈:
首先我們?nèi)绻皇亲龅卿?,確實(shí)不需要access_token,因?yàn)橐呀?jīng)有openid或者uid跟你的用戶對應(yīng)起來了,但是,這是授權(quán)行為,意味著第三方應(yīng)用可以拿著access_token去取你的數(shù)據(jù), 所以這里就需要時效性來保證安全了。(如果有更好的理解歡迎在評論區(qū)評論,勿噴!)
來源:http://www./content-4-140401.html
|