4、通過微信小程序曲線救國
今天我們就講解的是微信服務號,通過.0機制網(wǎng)頁授權登錄,獲取用戶基本信息。
流程
1、獲取code
2、獲取
3、獲取用戶基本信息
獲取code
通過以下接口即可獲得,參數(shù)說明:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
以上鏈接進行配置后,進行點擊訪問或跳轉(zhuǎn)。
配置例子:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=你公眾號的APPID&redirect_uri=你服務器的接收code的頁面鏈接&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
點擊允許,將會開始獲取code,并且跳轉(zhuǎn)到你的,就是你要接收code的頁面。
代碼可以這樣寫,.php
$code = $_GET["code"];
echo $code;
?>
例如你的服務器域名是,你的代碼放在服務器的wx目錄下,那么你的應該是
http://www.abc.com/wx/getcode.php
最后,你在微信內(nèi)點擊上面獲取code的鏈接php獲取訪客訪問網(wǎng)站來源信息,那么就會彈窗問你是否允許獲取用戶信息的了。
允許后,就跳轉(zhuǎn)到.php進行下一步的操作。
獲取
通過以下接口可以獲得,參數(shù)說明:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
上面所需的參數(shù)基本都有,APPID、是你服務號的,CODE上面已經(jīng)獲取到了,那么直接請求接口,就能獲得了。
下面.php頁面的:
$appid = "你公眾號的APPID";
$appsecret = "你公眾號的APPSECRET";
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code ";
//發(fā)起請求
$getopenid = file_get_contents($url);
$getopenid_arr = json_decode($getopenid, true);
$openid = $getopenid_arr["openid"];
$access_token = $getopenid_arr["access_token"];

?>
以上代碼直接就可以返回和了,接下來直接通過另一個接口,就可以獲得用戶基本信息。
獲取用戶基本信息(頭像、昵稱)
通過以下接口即可獲得,參數(shù)說明:
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
代碼我就不上了,跟上面的請求方式是一樣的。
掃碼登錄實現(xiàn)流程
我們上一步獲得的需要進行緩存,因為它是會失效的,我們應該進行緩存到服務器或者數(shù)據(jù)庫,也是要儲存到數(shù)據(jù)庫。
1、在儲存到數(shù)據(jù)庫前,先查詢數(shù)據(jù)庫是否存在這個用戶的,如果有,直接更新這個用戶的信息,并且返回登錄成功。如果沒有,則初始化一條數(shù)據(jù)進去。
2、然后瀏覽器輪詢這條數(shù)據(jù)的登錄狀態(tài),如果用戶掃碼登錄,獲得頭像和昵稱,那么就把頭像和昵稱更新到剛才初始化的數(shù)據(jù)當中,如果還沒有掃碼登錄,則一直在輪詢,直到掃碼登錄后就停止輪詢php獲取訪客訪問網(wǎng)站來源信息,建議設置一個過期時間,防止輪詢時間過長造成服務器的不良。