知識(shí)
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X(jué)表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營(yíng)銷(xiāo)的便利,運(yùn)營(yíng)的高效,讓網(wǎng)站成為營(yíng)銷(xiāo)工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!
您當(dāng)前位置>首頁(yè) » 新聞資訊 » 公眾號(hào)相關(guān) >
公眾號(hào)H5授權(quán)登錄原理
發(fā)表時(shí)間:2020-10-27
發(fā)布人:葵宇科技
瀏覽次數(shù):49
公眾號(hào)H5授權(quán)登錄
在微信公眾號(hào)里獲取微信用戶(hù)信息分兩種方式
注意:以下所有操作,都需要再公眾號(hào)配置網(wǎng)頁(yè)授權(quán)配置域名授權(quán)
1.以snsapi_base為scope發(fā)起的網(wǎng)頁(yè)授權(quán)
這種方式是靜默獲取,對(duì)用戶(hù)來(lái)說(shuō)是無(wú)感的,看不到任何變化
使用場(chǎng)景,只能獲取到openid,調(diào)用微信支付使用,無(wú)法獲取頭像昵稱(chēng)等數(shù)據(jù)
$wxurl = https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的APPID&redirect_uri={$url}&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect
注意參數(shù)說(shuō)明:
appid=你的APPID
{$url}回調(diào)的url地址,url需要用urlencode編碼
scope=snsapi_base 靜默授權(quán)類(lèi)型
使用說(shuō)明
$wxurl 這個(gè)鏈接地址是固定的拼接方式,微信官網(wǎng)有文檔點(diǎn)擊我獲取
把拿到的這個(gè)連接給前端,前端通過(guò)讓用戶(hù)觸發(fā)這個(gè)鏈接,跳轉(zhuǎn)獲取微信的code參數(shù),或者自己通過(guò)代碼觸發(fā)跳轉(zhuǎn)
微信跳轉(zhuǎn)后得到的鏈接 https://domain.com/index/index/wxlogin?code=051pYGkl2bQ3S54TUxll2ttJ6Z2pYGk0&state=STATE
后面多了code參數(shù)和state參數(shù),如果跳轉(zhuǎn)的是后端,后端直接獲取code就可以,如果跳轉(zhuǎn)的是前端, 前端截取url,拿到code傳給后端
$wxurl必須在微信里打開(kāi)才能獲取到code,開(kāi)發(fā)調(diào)試請(qǐng)使用微信開(kāi)發(fā)者工具,獲取結(jié)果如下
{"access_token":"38_gUjz8OA3RUbAiGSEB-o68bSAyI8rGVwOXmNepBHXKdcCEiNotFb3e9CTzFTxsFt21PxwXT3l9qUsL3gNBcsg8A","expires_in":7200,"refresh_token":"38_7aZk0NQHhLOO5e3j-uqVl5na48CMvuoedJ90c3lDmby8mOEsBHcsfT4SPtQJTMpMdx8GKFFR7sXFj6Nuu8h21A","openid":"obBHk04gFkeKsRVDowMfXn-LLYpU","scope":"snsapi_base"}
實(shí)現(xiàn)截圖
實(shí)現(xiàn)代碼
//后臺(tái)代碼 我用的是tp5
public function wxlogin()
{
$appid = '';
$appsecret = '';
$input = input();
if(!empty($input['code'])){
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$input['code'].'&grant_type=authorization_code';
$client = new Client(); //GuzzleHttp\Client 模擬http 請(qǐng)求,如果不會(huì)用 直接換成curl函數(shù)
$result = $client->get($url)->getBody()->getContents();
echo $result;
//die();
$api_data = json_decode($result, true);
//$api_data 里就是我們要獲取的openid
}
$url = urlencode('https://d-fangfei.bigchun.com/index/index/wxlogin');
$this->assign('url', $url);
return $this->view->fetch();
}
前端代碼
<p>
<a href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的APPID&redirect_uri={$url}&response_type=code&scope=snsapi_base&state=STATE&connect_redirect=1#wechat_redirect">
獲取靜默授權(quán)獲取code
</a>
</p>
2.以snsapi_userinfo為scope發(fā)起的網(wǎng)頁(yè)授權(quán)
這種方式是授權(quán)獲取,會(huì)彈出讓用戶(hù)確認(rèn)獲取資料按鈕
使用場(chǎng)景,可以獲取用戶(hù)openid,頭像,昵稱(chēng),性別等資料
$wxurl = https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri={$url}&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect
注意參數(shù)說(shuō)明:
appid=你的APPID
{$url}回調(diào)的url地址,url需要用urlencode編碼
scope = snsapi_userinfo
靜默授權(quán)類(lèi)型
使用說(shuō)明
$wxurl 這個(gè)鏈接地址是固定的拼接方式,微信官網(wǎng)有文檔點(diǎn)擊我獲取
把拿到的這個(gè)連接給前端,前端通過(guò)讓用戶(hù)觸發(fā)這個(gè)鏈接,跳轉(zhuǎn)獲取微信的code參數(shù),或者自己通過(guò)代碼觸發(fā)跳轉(zhuǎn)
微信跳轉(zhuǎn)后得到的鏈接 https://domain.com/index/index/wxlogin?code=051pYGkl2bQ3S54TUxll2ttJ6Z2pYGk0&state=STATE
后面多了code參數(shù)和state參數(shù),如果跳轉(zhuǎn)的是后端,后端直接獲取code就可以,如果跳轉(zhuǎn)的是前端, 前端截取url,拿到code傳給后端
實(shí)現(xiàn)過(guò)程截圖
$wxurl必須在微信里打開(kāi)才能獲取到code,開(kāi)發(fā)調(diào)試請(qǐng)使用微信開(kāi)發(fā)者工具,獲取結(jié)果如下:
{"openid":"obBHk04gFkeKsRVDowMfXn-LLYpU","nickname":"D永濤","sex":1,"language":"zh_CN","city":"深圳","province":"廣東","country":"中國(guó)","headimgurl":"https:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/DYAIOgq83eremdfYmic4MpxiadSdloCicKKNOdMZCIIQdwmiaPluD8NDVxXN5axqc9kmVGxVoFo88UkEy9GPKpicQUw\/132","privilege":[],"unionid":"oKzvn1ZU_Ne_4or8VLwhtZxlJOJU"}
實(shí)現(xiàn)截圖
1.觸發(fā)截圖
2.拼接上code后得到的結(jié)果
實(shí)現(xiàn)代碼
//后臺(tái)實(shí)現(xiàn)代碼
public function wxlogin()
{
$appid = '';
$appsecret = '';
$input = input();
if(!empty($input['code'])){
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid.'&secret='.$appsecret.'&code='.$input['code'].'&grant_type=authorization_code';//微信接口地址,參考接口文檔
$client = new Client(); //GuzzleHttp\Client 模擬http 請(qǐng)求,如果不會(huì)用 直接換成curl函數(shù)
$result = $client->get($url)->getBody()->getContents();
$api_data = json_decode($result, true);
if(!empty($api_data['openid'])){
$url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$api_data['access_token'].'&openid='.$api_data['openid'].'&lang=zh_CN';//微信接口地址,參考接口文檔
$client = new Client();
$result = $client->get($url)->getBody()->getContents();
$userinfo = json_decode($result, true);
print_r($userinfo);
}
}
$url = urlencode('https://d-fangfei.bigchun.com/index/index/wxlogin');
$this->assign('url', $url);
return $this->view->fetch();
}
前端實(shí)現(xiàn)代碼
<p>
<a href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的APPID&redirect_uri={$url}&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect">
微信授權(quán)登錄
</a>
</p>
有問(wèn)題可以加裙問(wèn)我,我是群主721200119
相關(guān)案例查看更多
相關(guān)閱讀
- 日歷組件
- 小程序被騙
- 昆明小程序哪家好
- 昆明網(wǎng)站設(shè)計(jì)
- 百度自然排名
- 云南網(wǎng)站維護(hù)
- 昆明小程序定制開(kāi)發(fā)
- 北京小程序開(kāi)發(fā)
- 企業(yè)網(wǎng)站
- 網(wǎng)站建設(shè)專(zhuān)業(yè)品牌
- 服務(wù)器
- 云南網(wǎng)站建設(shè)哪家公司好
- 網(wǎng)站建設(shè)案例
- 昆明網(wǎng)站開(kāi)發(fā)
- php網(wǎng)站
- web開(kāi)發(fā)技術(shù)
- 云南做百度小程序的公司
- 保山小程序開(kāi)發(fā)
- 云南電商網(wǎng)站建設(shè)
- web教程
- 云南省建設(shè)廳網(wǎng)站官網(wǎng)
- 百度小程序
- .net網(wǎng)站
- flex
- 關(guān)鍵詞快速排名
- 國(guó)內(nèi)知名網(wǎng)站建設(shè)公司排名
- 搜索引擎優(yōu)化
- 網(wǎng)站建設(shè)專(zhuān)家
- 河南小程序制作
- 云南網(wǎng)站設(shè)計(jì)