介绍
这篇文章将为大家详细讲解有关使用PHP怎么在后台登录微信小程序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
微信小程序官方给了十分详细的登陆时序图,当然为了安全着想,应该加上签名加密。
<强>微信小程序端强>
(1)。调用wx。登录获取代码。
2)。调用wx。getUserInfo获取签名所需的rawData,出,encryptData。
3)。发起请求将获取的数据发送的后台。
登录:,函数(e), { var 才能;that =,; wx.login({才能 ,,,成功:函数(res) { ,,var code =, res.code;,//获取代码 ,,wx.getUserInfo({,//得到rawData,,出,,encryptData 成功,,,:,功能(数据){ ,,,var rawData =, data.rawData; ,,,var signature =, data.signature; ,,,var encryptedData =, data.encryptedData;, ,,,var iv =, data.iv; ,,,wx.request ({ ,,,,url:, & # 39;你自己的后台地址& # 39;, ,,,,数据:,{ ,,,,“code",:,代码, ,,,,“rawData",:, rawData, ,,,,“signature",:,签名, ,,,,& # 39;第四,,:,第四, ,,,,& # 39;encryptedData # 39;: encryptedData ,,,,}, ,,,,方法:,& # 39;得到# 39;,, ,,,,:成功,函数(信息){ ,,,,console.log(信息); ,,,,} ,,,}) ,,,} ,,}) ,,}, })才能 以前,}><强>服务端强>
需下载微信官方解密文件。——[用户数据的签名验证和加解密]
1。解压后会出现不同语言的文件包,这里用的是PHP,将文件夹放到供应商目录下。
2。根据登陆凭代码证获取session_key和openid。
3。数据签名校验。
4。数据解密。
5。生成第三方3 rd_session并返回微信小程序端。/* *才能登录(调用wx.login获取) *,才能@param code 美元;字符串 *,才能@param rawData 美元;字符串 *,才能@param signatrue 美元;字符串 *,才能@param encryptedData 美元;字符串 *,才能@param iv 美元;字符串 *,才能@return code 美元;成功码 *,才能@return session3rd 美元;第三方3 rd_session *,才能@return data 美元;用户数据 ,*/,public function 登录() ,{//才能开发者使用登陆凭证,code 获取,session_key 和openid 时间=美元才能APPID & # 39; & # 39;;//自己配置 时间=美元才能AppSecret & # 39; & # 39;;//自己配置 code 美元;=,才能输入(& # 39;代码# 39;); 时间=美元才能url “https://api.weixin.qq.com/sns/jscode2session?appid=",只APPID 美元;只“,秘密=?只AppSecret 美元;只“,js_code=?只code 美元;只“,grant_type=authorization_code";=美元才能arr $ this→vget ($ url);,//,一个使用curl实现的得到方法请求 时间=美元才能arr json_decode (arr美元,,真的); 时间=美元才能openid 美元arr [& # 39; openid # 39;]; 时间=美元才能session_key 美元arr [& # 39; session_key& # 39;];//才能,数据签名校验 signature 美元;=,才能输入(& # 39;签名# 39;);=美元才能rawData 要求::实例()→post (& # 39; rawData& # 39;); 时间=美元才能signature2 sha1 (rawData 美元;只session_key美元); if 才能;(signature 美元;!=,signature2美元),{ ,,return json((& # 39;代码# 39;,=祝辞,500年,& # 39;味精# 39;,=祝辞,& # 39;数据签名验证失败! & # 39;]); ,,} 供应商才能(“PHP.wxBizDataCrypt");,//加载解密文件,在官方有下载 encryptedData 美元;=,才能输入(& # 39;encrypteddata # 39;); iv 美元;=,才能输入(& # 39;第四,); 时间=美元才能pc new \ WXBizDataCrypt (APPID美元,,session_key美元);=美元才能errCode pc→美元decryptData (encryptedData美元,美元四世,元数据),,//其中$ data包含用户的所有数据 时间=美元才能data json_decode(元数据); if 才能;(errCode 美元;==,0),{ ,,转储(元数据); ,,死;//打印解密所得的用户信息 ,,},{else ,,echo errCode美元;//打印失败信息 ,,} ,} ,public function  vget ($ url) { $ info=才能curl_init (); curl_setopt才能($ info CURLOPT_RETURNTRANSFER真实); curl_setopt才能($ info CURLOPT_HEADER 0); curl_setopt才能($ info CURLOPT_NOBODY 0); curl_setopt才能($ info CURLOPT_SSL_VERIFYPEER,假); curl_setopt才能($ info CURLOPT_SSL_VERIFYHOST,假); curl_setopt才能($ info CURLOPT_URL $ url); 美元才能输出=,curl_exec ($ info); curl_close才能($ info); null null使用PHP怎么在后台登录微信小程序