最近在接入新浪的網(wǎng)頁(yè)授權(quán)登錄,把遇到的一些問(wèn)題總結(jié)出來(lái):(所有的坑基本都源于不仔細(xì),文檔沒(méi)看清等)
1、先申請(qǐng)應(yīng)用,得到AppKey和App Secret,應(yīng)用未審核通過(guò)前是可以用申請(qǐng)賬號(hào)測(cè)試的(QQ網(wǎng)頁(yè)登錄也是一樣的)
2、配置授權(quán)回調(diào)地址,未配置的話,調(diào)用的時(shí)候會(huì)報(bào)錯(cuò)
3、正式寫(xiě)后端代碼接入:
3.1、獲取code:調(diào)用https://api.weibo.com/oauth2/authorize?client_id=申請(qǐng)的appkey&response_type=code&redirect_uri=code的回調(diào)地址
3.2、獲取access_token:新浪回調(diào)我們上面填寫(xiě)的回掉地址,并攜帶code=xxxxx,我們拿到code,拼接獲取access_token的URL:https://api.weibo.com/oauth2/access_token?client_id=申請(qǐng)的AppKey&client_secret=申請(qǐng)的AppSecret&redirect_uri=回掉地址(同上)&code=6f1b3f09e51fd66be6e547e83443688d&grant_type=authorization_code,注意這里的調(diào)用方式是POST,body傳{},如果用GET請(qǐng)求會(huì)報(bào){"error":"HTTP?METHOD?is?not?suported?for?this?request!","error_code":10021,"request":"/oauth2/access_token"},這個(gè)接口會(huì)返回一個(gè)JSON對(duì)象:包含access_token、uid、remind_in、expires_in、isRealName 參數(shù)
3.3、獲取用戶信息:https://api.weibo.com/2/users/show.json?access_tkoen=xxx&uid=xxx,參數(shù)uid與screen_name二者必選其一,且只能選其一
得到的是JSON字符串,需要轉(zhuǎn)成JSON對(duì)象。這里我們就得到了用戶授權(quán)登錄后的信息了,這里得到的用戶province和city是數(shù)字,可以根據(jù)需要自己轉(zhuǎn)換成對(duì)應(yīng)的省市 省份城市編碼表,然后根據(jù)需求服務(wù)端對(duì)數(shù)據(jù)進(jìn)行緩存。