微信公共號(hào)網(wǎng)頁授權(quán)
時(shí)間:2022-08-06 20:30:02 | 來源:網(wǎng)站運(yùn)營
時(shí)間:2022-08-06 20:30:02 來源:網(wǎng)站運(yùn)營
微信公共號(hào)(服務(wù)號(hào)和訂閱號(hào))授權(quán)獲取openid 和用戶信息
1:在公共號(hào)配置 回調(diào)地址域名
配置域名路徑
開發(fā)-接口權(quán)限-OAuth2.0網(wǎng)頁授權(quán) (只能配置一個(gè)域名)
2:授權(quán)方式,靜默授權(quán)和非靜默授權(quán)
2-1、以snsapi_base為scope發(fā)起的網(wǎng)頁授權(quán),是用來獲取進(jìn)入頁面的用戶的openid的,
并且是靜默授權(quán)并自動(dòng)跳轉(zhuǎn)到回調(diào)頁的。用戶感知的就是直接進(jìn)入了回調(diào)頁
2-2、以snsapi_userinfo為scope發(fā)起的網(wǎng)頁授權(quán),是用來獲取用戶的基本信息的。
但這種授權(quán)需要用戶手動(dòng)同意,并且由于用戶同意過,所以無須關(guān)注,就可在授權(quán)后
獲取該用戶的基本信息。
3:根據(jù)授權(quán)地址獲取code
3-1:編寫回調(diào)方法(java中 編寫一個(gè)action),回調(diào)地址用urlencode轉(zhuǎn)碼
例如我的回調(diào)地址為:
https://m.biqu.panatrip.cn/embed/hongbao/lingqu 轉(zhuǎn)換后:https%3A%2F%2Fm.biqu.panatrip.cn%2Fembed%2Fhongbao%2Flingqu
例子授權(quán)地址:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx5ef54e044b7e4ce5&redirect_uri=https%3A%2F%2Fm.biqu.panatrip.cn%2Fembed%2Fhongbao%2Flingqu&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect 參數(shù)說明:
appid 公眾號(hào)的唯一標(biāo)識(shí)
redirect_uri 授權(quán)后重定向的回調(diào)鏈接地址,請(qǐng)使用urlencode對(duì)鏈接進(jìn)行處理
response_type 返回類型,請(qǐng)?zhí)顚慶ode
scope 應(yīng)用授權(quán)作用域,snsapi_base (不彈出授權(quán)頁面,直接跳轉(zhuǎn),只能獲取用戶 openid),
snsapi_userinfo (彈出授權(quán)頁面,可通過openid拿到昵稱、性別、所在地。并且,即使在未關(guān)注的情況下,只要用戶授權(quán),也能獲取其信息)
state 重定向后會(huì)帶上state參數(shù),開發(fā)者可以填寫a-zA-Z0-9的參數(shù)值,最多128字節(jié)
#wechat_redirect 無論直接打開還是做頁面302重定向時(shí)候,必須帶此參數(shù)
3-2:在回調(diào)方法中 get到code和state參數(shù)
String code = request.getParameter("code");
String state = request.getParameter("state");
4:獲取用戶的openid,token(調(diào)用微信接口 http協(xié)議 get請(qǐng)求)
接口地址:
https://api.weixin.qq.com/sns/oauth2/access_token 傳入?yún)?shù):
appid 公眾號(hào)的唯一標(biāo)識(shí)
secret 公眾號(hào)的appsecret
code 填寫第一步獲取的code參數(shù)
grant_type 填寫為authorization_code
返回參數(shù)
access_token 網(wǎng)頁授權(quán)接口調(diào)用憑證,注意:此access_token與基礎(chǔ)支持
的 access_token不同
expires_in access_token接口調(diào)用憑證超時(shí)時(shí)間,單位(秒)
refresh_token 用戶刷新access_token
openid 用戶唯一標(biāo)識(shí),請(qǐng)注意,在未關(guān)注公眾號(hào)時(shí),用戶訪問公眾號(hào)的網(wǎng)頁,也會(huì)產(chǎn) 生一個(gè)用戶和公眾號(hào)唯一的OpenID
scope 用戶授權(quán)的作用域,使用逗號(hào)(,)分隔
5:拉取用戶信息(需scope為 snsapi_userinfo)
接口地址:
https://api.weixin.qq.com/sns/userinfo 傳入?yún)?shù):
access_token 網(wǎng)頁授權(quán)接口調(diào)用憑證,注意:此access_token與基礎(chǔ)支持的access_token不同
openid 用戶的唯一標(biāo)識(shí)
lang 返回國家地區(qū)語言版本,zh_CN 簡(jiǎn)體,zh_TW 繁體,en 英語
返回參數(shù):
penid 用戶的唯一標(biāo)識(shí)
nickname 用戶昵稱
sex 用戶的性別,值為1時(shí)是男性,值為2時(shí)是女性,值為0時(shí)是未知
province 用戶個(gè)人資料填寫的省份
city 普通用戶個(gè)人資料填寫的城市
country 國家,如中國為CN
headimgurl 用戶頭像,最后一個(gè)數(shù)值代表正方形頭像大?。ㄓ?、46、64、96、132數(shù)值可選,0代表640*640正方形頭像),用戶沒有頭像時(shí)該項(xiàng)為空。若用戶更換頭像,原有頭像URL將失效。
privilege 用戶特權(quán)信息,json 數(shù)組,如微信沃卡用戶為(chinaunicom)
unionid 只有在用戶將公眾號(hào)綁定到微信開放平臺(tái)帳號(hào)后,才會(huì)出現(xiàn)該字段。
微信開發(fā)者文檔地址:
https://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html