網(wǎng)站應(yīng)用微信登錄是基于OAuth2.0協(xié)議標(biāo)準(zhǔn)構(gòu)建的微信OAuth2.0授權(quán)登錄系統(tǒng)。
申請(qǐng)應(yīng)用及配置
在微信開發(fā)平臺(tái)上(open.weixin.qq.com)申請(qǐng)網(wǎng)站應(yīng)用
申請(qǐng)后,除了基本的appid及appsecret,還需要設(shè)置授權(quán)回調(diào)域(很多人總是忘記設(shè)置這個(gè))
授權(quán)
完成上面的步驟后,接下來(lái)就進(jìn)入接入環(huán)節(jié)了
每個(gè)環(huán)節(jié)基本都有需要注意的點(diǎn)
第一步:請(qǐng)求 CODE
- redirect_uri 這里要對(duì)跳轉(zhuǎn)的uri進(jìn)行urlEncode處理
- scope 的值 snsapi_login
第二步:通過(guò) code
獲取 access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
這一步在后端進(jìn)行,請(qǐng)求參數(shù)沒什么要注意的, 但返回的信息很重要
{
.....,
openid,
unionid,
}
其中 unionid
在同一個(gè)開發(fā)主體下的不同應(yīng)用是一致的,如果開發(fā)主體需要旗下各應(yīng)用微信統(tǒng)一賬號(hào),可用其作為唯一的標(biāo)示
第三步:通過(guò) access_token
調(diào)用接口
調(diào)用的接口就根據(jù)業(yè)務(wù)需要了
實(shí)際上微信登錄后,一般請(qǐng)求以下接口:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
該接口會(huì)返回用戶在微信上的基本信息及 unionid
, 可在數(shù)據(jù)表驗(yàn)證 unionid
,根據(jù)是否存在,不存在則創(chuàng)建用戶,最終設(shè)置成自己網(wǎng)站的登陸態(tài)即可。
打通同一公司主體賬號(hào)
在微信開放平臺(tái)上,可以綁定同一個(gè)公司主體的公眾號(hào)、網(wǎng)站登錄、移動(dòng)端等各個(gè)應(yīng)用。 以A有限公司為例,在開放平臺(tái)完成各應(yīng)用綁定后,同一用戶在A公司下的各個(gè)應(yīng)用下都有一致的 unionid
, 第三方賬號(hào)基于一致的unionid
,保證了同一用戶在A公司不同的應(yīng)用下使用微信登錄,都是同一賬號(hào),提升了用戶體驗(yàn)。