之前做的版本用户这块是以获取用户openid为凭证,最近改版重新整理了一下,新增注册登录以手机号码为主,
两种(正常注册手机号码-密码+一键获取当前用户手机号码)
getPhoneNumber这个组件要通过button来实现。将button中的open-type=“getPhoneNumber”,并且绑定bindgetphonenumber事件获取回调。
在使用这个组件之前必须先调用 login 接口
然后传递code,iv,encryptedData参数到后台,后台解密
示例
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber" hover-class="none">一键自动注册</button>
getPhoneNumber: function (e) { console.log(e.detail.errMsg) if (e.detail.errMsg == ‘getPhoneNumber:fail user deny‘) { wx.showModal({ title: ‘提示‘, showCancel: false, content: ‘未授权‘, success: function (res) { } }) } else { wx.login({ success: function (res) { var code = res.code; if (res.code) { //发起网络请求 console.log(res.code) } else { console.log(‘获取用户登录态失败!‘ + res.errMsg) } wx.showModal({ title: ‘提示‘, showCancel: false, content: ‘同意授权‘, success: function (res) { var that = this; console.log(123) wx.request({ url: ‘/wxapplet/wx/wechat/phone‘, data: { code: code, iv: e.detail.iv, encryptedData: e.detail.encryptedData }, method: ‘GET‘, header: { ‘content-type‘: ‘application/json‘ }, success: function (res) { wx.setStorageSync(‘user‘, res.data.data); if(res.data.code == "200"){ console.log(res.data.data) wx.showToast({ title: ‘一键绑定成功‘, icon: ‘success‘, duration: 2000, success: function(){ wx.switchTab({ url: ‘../user-center/index‘ }); } }) }else{ wx.showModal({ title: ‘提示‘, content: ‘一键绑定失败,请重新尝试‘, success: function (res) { if (res.confirm) { console.log(‘用户点击确定‘) } else if (res.cancel) { console.log(‘用户点击取消‘) } } }) } }, }); } }) } }); } }
- 后台是php 框架是laravel
<?php namespace App\Http\Controllers\WxApplet; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Repository\WxUserRepository; include_once app_path(‘/Http/Controllers/WxApplet/Php/wxBizDataCrypt.php‘); class WechatController extends Controller { /** * constructer. * * @param WxUserRepository $wxUser */ public function __construct ( WxUserRepository $WxUserRepository ) { $this->WxUserRepository = $WxUserRepository; } /** * 获取用户手机号码 * * @return response */ public function getWechatUserPhone(Request $request) { $code = $request->get(‘code‘); $encryptedData = $request->get(‘encryptedData‘); $iv = $request->get(‘iv‘); //小程序开发账户 $appid = "*******" ; $secret = "*******"; $URL = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code"; $apiData=file_get_contents($URL); if(!isset(json_decode($apiData)->errcode)) { $sessionKey = json_decode($apiData)->session_key; $info = new \WXBizDataCrypt($appid, $sessionKey); $errCode = $info->decryptData($encryptedData, $iv, $data ); if ($errCode == 0) { $phone = json_decode($data)->phoneNumber; $single_phone=$this->WxUserRepository->Single($phone); if ($single_phone == null) { $wx_user = $this->WxUserRepository->Create($phone,$password); } return $this->Success(200003); } else { return $this->fail(420004); } } } }
原文链接:https://blog.csdn.net/qq_34827048/article/details/78878121
原文地址:https://www.cnblogs.com/zmdComeOn/p/11780173.html
时间: 2024-11-06 17:16:24