概要:
1. 介紹流程
2. SDK測(cè)試
3. Laravel 集成
4. 注意事項(xiàng):mcrypt_module_open 在php7.1 之后廢棄,看:http://www.php.net/manual/en/function.mcrypt-module-open.php
全文:
微信小程序的授權(quán)流程
https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxchecksessionobject
需求是:
同一個(gè)微信用戶在手機(jī)APP微信授權(quán)和通過(guò)微信小程序訪問(wèn)烁涌,都能判斷是同一個(gè)人静汤,
在微信開(kāi)發(fā)平臺(tái)綁定相關(guān)應(yīng)用后,會(huì)得到相同的unionid 作為標(biāo)識(shí)。
在手機(jī)上授權(quán)得到unionid 是APP 的事情仗扬,操作起來(lái)簡(jiǎn)單润文,但是在微信小程序上
就稍微曲折了十绑,流程圖如下圖:
總計(jì)起來(lái)就是:
code -> session_key->session_key_3rd->iv,encryptedData,session_key,appid->openid+unionid
SDK 集成測(cè)試
下載官方的 https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html
本地測(cè)試是沒(méi)有問(wèn)題执庐,可以直接拿到
{
"content": {
"openId": "xxxxxx",
"nickName": "xxx",
"gender": 1,
"language": "zh_CN",
"city": "深圳",
"province": "廣東",
"country": "中國(guó)",
"avatarUrl": "https://wx.qlogo.cn/mmopen/vi_32/xxx/0",
"unionId": "xxx",
"watermark": {
"timestamp": 1500869385,
"appid": "xxxxxxx"
}
}
集成到 Laravel去
簡(jiǎn)單點(diǎn)總結(jié),就是增加了命名空間酒繁,好方便調(diào)用
我已經(jīng)放到 github去了滓彰,省略1000字
https://github.com/lukeyan/tools
composer require lukeyan/tools
位置:
調(diào)用方法:
拿到了unionid 后就自由發(fā)揮校對(duì)用戶身份
PHP7.1 只有的環(huán)境要注意了,mcrypt_encrypt 被廢棄了州袒,要切換為 openssl
一開(kāi)始我本地環(huán)境是 php 5.6.24 正常跑沒(méi)有問(wèn)題揭绑,在服務(wù)器環(huán)境就提示我 mcrypt_module_open 函數(shù)有問(wèn)題了,百度一下,需要換成了 openssl 的處理他匪,https://coderlife.cn/1624.html 菇存;
為什么微信提供的SDK不注明一下,差評(píng)邦蜜,自己動(dòng)手改一下吧
注釋掉之前的依鸥,改為新的(都已經(jīng)是依賴包里邊了)就可以了