PHP對接微信掃碼登入

菜鳥$PHP發表於2020-10-30

 

1、PC端掃碼登入 

如果你將微信小程式和公眾賬號繫結同一個微信開放平臺,那麼他們各自的介面返回有一個引數unionid是相同的(沒有繫結微信公眾賬號就沒有);那麼你就可以使用這個unionid來做業務處理了

接下來會詳細介紹以上介面如何獲取使用者微信資訊

PC端掃碼登入 

1、首先到微信開放平臺註冊一個賬號,資料自己對著填

2、在管理中心-》網站應用-》建立網站應用 填寫要微信掃碼的網站資料

自己準備資料填寫就好了,就提交上去

3、接下來就使用php來對接微信掃碼登入了

官方文件:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html

裡面的引數根據自己的情況設定,這裡只是舉個例子參考

3.1發起微信掃碼請求,建立login.php檔案

<?php
  $appid=xxxxx;#在微信開放平臺的應用中可以檢視
  $redirect_uri='http://www.xxxx.com/index.php';
  $state='ok';#這個引數根據自己的業務填,可以不填
  
$url='https://open.weixin.qq.com/connect/qrconnect?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_login&state=$state#wechat_redirect';
  header("Loction:".$url);

以下是請求的引數 ,具體的看官網

3.2寫一個單獨的方法(index.php)獲取code,其中微信官方會通過上面的redirect_uri引數找到你這個地址,其中你只要被動接受code就好了

<?php
$code=$_GET['code'];
$state=$_GET['sate'];
$appid=xxxxx;
$secret=xxxx;
#我們可以通過code獲取access_token,返回的介面可以var_dump列印一下
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code";
$res=file_get_contents($url);

 

 返回引數如下圖官方的介紹

如果想獲取使用者的資料那麼可以

<?php
$code=$_GET['code'];
$state=$_GET['sate'];
$appid=xxxxx;#開放平臺獲取
$secret=xxxx;#開放平臺獲取
#我們可以通過code獲取access_token,
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code";
$res=file_get_contents($url);#返回資料可以var_dump列印一下
$res=json_decode($res,true);#這裡結果自己判斷
$url1="https://api.weixin.qq.com/sns/userinfo?access_token=$res['access_token']&openid=$res['openid']";
$userInfo=file_get_contents($url1);#userInfo就是微信獲取的使用者資料,其中包括openid和unionid,頭像、微信暱稱等等

以下就是userInfo裡面的資料,下圖是微信官網的參照圖

那麼你每次通過微信掃碼登入就可以把資料跟新或插入到資料庫了,其中最主要的就是用到unionid,如果你微信開放平臺關聯了小程式,那麼小程式返回的openid和unionid中openid和微信掃碼返回的openid不一樣,unionid是相同的,那麼我們就可以判斷是同一個使用者了


 

相關文章