做过微信登录的都知道,我们需要一个标识来记录用户的身份的唯一性,在微信中unionid就是我们所需要的记录唯一id,那么如何拿到unionid就成了关键,将项目分为小程序和 后台php代码两部分来讲。
先从我们的小程序代码开始
简单的说一下我们小程序的js代码登录流程
login ->获取code ->getUserInfo获取iv和encryptedData ->传给自己的服务器处理 ->返回给小程序结果
var API_URL = "自己的服务器地址"; Page({ onLoad: function () { console.log("iv"); wx.login({//login流程 success: function (res) {//登录成功 if (res.code) { var code = res.code; wx.getUserInfo({//getUserInfo流程 success: function (res2) {//获取userinfo成功 console.log(res2); var encryptedData = encodeURIComponent(res2.encryptedData);//一定要把加密串转成URI编码 var iv = res2.iv; //请求自己的服务器 Login(code,encryptedData,iv); } }) } else { console.log('获取用户登录态失败!' + res.errMsg) } } }); } })登录后复制
code:服务器用来获取sessionKey的必要参数。
IV:加密算法的初始向量,encryptedData:加密过的字符串。
把code iv encryptedData 传递给我们的服务器
function Login(code,encryptedData,iv){ console.log('code='+code+'&encryptedData='+encryptedData+'&iv='+iv); //创建一个dialog wx.showToast({ title: '正在登录...', icon: 'loading', duration: 10000 }); //请求服务器 wx.request({ url: API_URL, data: { code:code, encryptedData:encryptedData, iv:iv }, method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT header: { 'content-type': 'application/json' }, // 设置请求的 header success: function (res) { // success wx.hideToast(); console.log('服务器返回'+res.data); }, fail: function () { // fail // wx.hideToast(); }, complete: function () { // complete } }) }登录后复制
看文档的话,应该知道,我们所需要的unionId就在encryptedData中,所以服务器需要这些信息来把unionId解析出来。
服务器处理逻辑
先下载微信的解密demo
这里选择的是PHP代码,把除了demo外的三个class文件,放入我们自己的项目,以后后面调用。
这里讲解一下服务器的处理流程:
通过微信的接口获取seesionKey,然后在通过sessionKey和iv来解密encryptedData数据获取UnionID。
/** * 登录 * * @return Response */ public function weixinlogin( $user_id=null ) { global $App_Error_Conf,$Gift_Ids,$Server_Http_Path,$Is_Local,$Test_User,$Good_Vcode,$WeiXin_Xd_Conf; $validator_result = input_validator(array('code','iv','encryptedData')); if(!empty($validator_result)){ return response($validator_result); } $js_code = $_REQUEST['code']; $encryptedData = $_REQUEST['encryptedData']; $iv = $_REQUEST['iv']; $appid = $WeiXin_Xd_Conf['appid']; $secret = $WeiXin_Xd_Conf['secret']; $grant_type = $WeiXin_Xd_Conf['grant_type']; //从微信获取session_key $user_info_url = $WeiXin_Xd_Conf['code2session_url']; $user_info_url = sprintf("%s?appid=%s&secret=%s&js_code=%s&grant_type=%",$user_info_url,$appid,$secret,$js_code,$grant_type); $weixin_user_data = json_decode(get_url($user_info_url)); $session_key = $weixin_user_data->session_key; //解密数据 $data = ''; $wxBizDataCrypt = new WXBizDataCrypt($appid, $session_key); $errCode=$wxBizDataCrypt>decryptData($appid,$session_key,$encryptedData, $iv, $data );登录后复制
最后拿到的这个 data就是我们解密后的encryptedData里面会包含unionId。
以上就是微信小程序开发之登录流程制作说明的详细内容,更多请关注慧达安全导航其它相关文章!
免责 声明
1、本网站名称:慧达安全导航
2、本站永久网址:https//www.huida178.com/
3、本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务!
4、本站所有资源的属示图片和信息不代表本站的立场!本站只是储蓄平台及搬运
5、下载者禁止在服务器和虚拟机下进行搭建运营,本站所有资源不支持联网运行!只允许调试,参考和研究!!!!
6、未经原版权作者许可禁止用于任何商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
7、为尊重作者版权,请在下载24小时内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
8.若资源侵犯了您的合法权益,请持 您的版权证书和相关原作品信息来信通知我们!QQ:1247526623我们会及时删除,给您带来的不便,我们深表歉意!
9、如下载链接失效、广告或者压缩包问题请联系站长处理
10、如果你也有好源码或者教程,可以发布到网站,分享有金币奖励和额外收入!
11、本站资源售价只是赞助,收取费用仅维持本站的日常运营所需
12、因源码具有可复制性,一经赞助,不得以任何形式退款。
13、本文内容由网友自发贡献和站长收集,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系1247526623@qq.com
转载请注明出处: 慧达安全导航 » 微信小程序开发之登录流程制作说明
发表评论 取消回复