分析:關於 「關注後使用者資訊獲取介面」調整的通知

php_yt發表於2021-12-14

公眾號網頁授權

具體指哪個介面?

官方文件:獲取使用者基本資訊

分析:關於 「關注後使用者資訊獲取介面」調整的通知

指的是 cgi-bin/user/info 介面,之前你可能在使用者關注事件時,或者網頁靜默授權時,呼叫該介面來儲存使用者資訊,但是該介面即將獲取不到暱稱、頭像資訊了,只支援相關業務頁面非靜默授權獲取。

官方文件:微信網頁開發 /網頁授權

非靜默授權流程 (與靜默授權對比)
假如公眾號的一個業務頁面為釋出問題 /question/commit.html,需要獲取使用者的頭像暱稱資訊,只能非靜默授權。

第一步:引導使用者進入授權頁面同意授權,獲取code

業務方先拼接引數,跳轉到如下地址,即使用者授權頁面

https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid
&redirect_uri=https%3A%2F%2Fabc.com%2Fquestion%2Fcommit.html
&response_type=code
&scope=snsapi_base或者snsapi_userinfo
&state=STATE#wechat_redirect

靜默授權
如果引數是 scope=nsapi_base 代表靜默授權,使用者無感知,微信立即跳回業務方頁面,並攜帶 code。

/question/commit.html?code=003tgd100Od6YM22cu3d3BAVEo1tgd1r&state=STATE

後端接受 code,進行下一步。

非靜默授權
如果引數是 sscope=snsapi_userinfo 代表非靜默授權,使用者需要手動點選授權,
公眾號網頁授權

點同意後跳回業務方頁面,並攜帶 code。

/question/commit.html?code=041bxl0w3eTLCX2aeK3w3BTVeA0bxl0m&state=STATE

後端接受 code,進行下一步。

第二步:通過code換取網頁授權access_token

api:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid
&secret=secret
&code=063uV0ll2bath13JhCll2ubcoD3uV0lO
&grant_type=authorization_code

result:

  • scope= snsapi_base 靜默授權

    {"access_token":"52_..-OaS8-1A",
    "expires_in":7200,
    "refresh_token":"52_Cb..hmw",
    "openid":"o-qe..DDA",
    "scope":"snsapi_base"}
  • scope= snsapi_userinfo 非靜默授權

    {"access_token":"52_AV4..LH9A",
    "expires_in":7200,
    "refresh_token":"52_h_t..mnlA",
    "openid":"o-qe..DDA",
    "scope":"snsapi_userinfo",
    "unionid":"ocJQ..AU8"}

獲取使用者資訊方式

  • scope= snsapi_base 靜默授權

如果網頁授權的作用域為snsapi_base,則本步驟中獲取到網頁授權access_token的同時,也獲取到了openid,snsapi_base式的網頁授權流程即到此為止。

也就是說靜默授權獲取使用者資訊只使用第二步返回的 openid ,不需要第二步返回的 access_token,但該方式即將不能獲取頭像暱稱。

https://api.weixin.qq.com/cgi-bin/user/info?access_token=52_..ABAFPC(非網頁授權access_token)
&openid=o-..DDA

result:

{"subscribe":1,
"openid":"o-qe..DDA",
"nickname":"\u5929\u4fdd",(20211227日之後不再輸出)
"sex":0,"language":"zh_CN","city":"","province":"","country":"",
"headimgurl":"http:..S7micTIwa7\/132",(20211227日之後不再輸出)
"subscribe_time":1691888866,
"unionid":"ocJ..AU8",
"remark":"","groupid":0,
"tagid_list":[],
"subscribe_scene":"ADD_SCENE_SEARCH",
"qr_scene":0,"qr_scene_str":""}
  • scope= snsapi_userinfo 非靜默授權
    使用第二步返回的 openidaccess_token獲取使用者資訊
    https://api.weixin.qq.com/sns/userinfo?access_token=52_x..bDCg(網頁授權access_token)
    &openid=o-q..DDA
    result:
    {"openid":"o-qe..DDA",
    "nickname":"魯智深",
    "sex":0,"language":"","city":"","province":"","country":"",
    "headimgurl":"https:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/ubCVcWg。。MH0aw\/132",
    "privilege":[],
    "unionid":"ocJQGw..AU8"}
本作品採用《CC 協議》,轉載必須註明作者和本文連結
focus

相關文章