微信用戶關(guān)注公眾號(hào)流程:
搜索公眾號(hào)---->點(diǎn)擊公眾號(hào)顯示關(guān)注頁(yè)面---->點(diǎn)擊關(guān)注---->進(jìn)入公眾號(hào)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? / \
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? / ? \
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?不瀏覽不需要授權(quán) ? ? ? ? 點(diǎn)擊任何菜單鏈接 ,都需要授權(quán)
具體而言,網(wǎng)頁(yè)授權(quán)流程分為四步:
1、引導(dǎo)用戶進(jìn)入授權(quán)頁(yè)面同意授權(quán),獲取code
? ? ? ? ? 如果用戶同意授權(quán),頁(yè)面將跳轉(zhuǎn)至 redirect_uri/?code=CODE&state=STATE。
? ? ? ? ?code說(shuō)明 : code作為換取access_token的票據(jù),每次用戶授權(quán)帶上的code將不一樣,code只 能使用一次,5分鐘未被使用自動(dòng)過(guò)期。
2、通過(guò)code換取網(wǎng)頁(yè)授權(quán)access_token(與基礎(chǔ)支持中的access_token不同)
? ? ? ? ?如果網(wǎng)頁(yè)授權(quán)的作用域?yàn)閟nsapi_base,則本步驟中獲取到網(wǎng)頁(yè)授權(quán)access_token的同時(shí),也獲取到了openid,snsapi_base式的網(wǎng)頁(yè)授權(quán)流程即到此為止。
3、如果需要,開(kāi)發(fā)者可以刷新網(wǎng)頁(yè)授權(quán)access_token,避免過(guò)期
4、通過(guò)網(wǎng)頁(yè)授權(quán)access_token和openid獲取用戶基本信息(支持UnionID機(jī)制)
? ? ? ? ? 如果網(wǎng)頁(yè)授權(quán)作用域?yàn)閟nsapi_userinfo,則此時(shí)開(kāi)發(fā)者可以通過(guò)access_token和openid拉取用戶信息了。
5、兩種scope的區(qū)別:
應(yīng)用授權(quán)作用域不同:
靜默授權(quán):snsapi_base (不彈出授權(quán)頁(yè)面,直接跳轉(zhuǎn),只能獲取用戶openid)
手動(dòng)授權(quán):snsapi_userinfo (彈出授權(quán)頁(yè)面,可通過(guò)openid拿到昵稱性別、所在地。并且,即使在未關(guān)注的情況下,只要用戶授權(quán),也能獲取其信息)
必須驗(yàn)證是用戶手動(dòng)同意授權(quán),才允許開(kāi)發(fā)者通過(guò)openid拿到具體的用戶信息,靜默授權(quán)沒(méi)有用戶手動(dòng)同意授權(quán)這一動(dòng)作,所以只能拿到openid,不能通過(guò)openid進(jìn)一步取用戶詳細(xì)信息。