//在app.js里有小程序写好的模板,直接调用既可
// 静默登录
wx.login({
success: res => {
var code = (res.code)
wx.request({
url: 'http://www.yq.com/index.php/api/login',
data:{
code:code
},
success:function(res){
var code = (res.data.code)
if(code==200){
wx.reLaunch({
url: '/pages/login/login',
})
}
}
})
}
})
//后端代码逻辑如下
1.先接收到小程序端传过来的code
2然后微信开发文档获取到你的appid和screct
https://mp.weixin.qq.com/
3接着获取到你的sppid,和 session_key,去库里查看是否有sppid一样的用户,如果有更新session_key,如果没有就将你获取到的sppid和session_key添加进库,并返回数据
/**
* 静默登录
*/
public function login(){
$code = \request()->get('code');
$appid = '你的';
$secret ='你的';
$url ="https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
$url = file_get_contents($url,true);
$url = json_decode($url,true);
$openid =$url['openid'];
$session_key=$url['session_key'];
$data = modeller::where('openid',$openid)->first();
if (!$data){
modeller::create($url);
}else{
modeller::where('openid',$openid)->update([
'session_key'=>$session_key
]);
}
//应该在这里,将用户表里的数据查出来,然后将id加密返回到前端,我脑子瓦特了,忘记返回了,所以前端就随便定义了一个数作为id,切记
return json_encode(['code'=>200,'msg'=>'成功','data'=>[]]);
}
手机号绑定(一键登录)
//逻辑,首先将code获取,然后去后台获取到手机号返回前端,从前端将缓存的id和手机号请求后端,将id相等的字段后绑定手机号
获取手机号 | 微信开放文档微信开发者平台文档https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html
//这是链接上可以复制的,获取手机号
//这是获取到的code
/** * 一键获取手机号 */ getPhoneNumber (e) { var code = (e.detail.code) wx.request({ url: 'http://www.yq.com/index.php/api/loginDo', data:{ code:code }, success:function(res){ var phone = (res.data.data.phone_info.phoneNumber) //这是返回回来的token,通过wx.setStorageSync('key', data)存的,现在取出来,由于刚刚在静默登录的时候没有返回token, //所以就以id=1为token,jwt不知道怎么弄的可以看我的博客 var id = 1 wx.request({ url: 'http://www.yq.com/index.php/api/phone', data:{ id:id, phone:phone }, success:function(res){ console.log(res) } }) } }) }
//获取到code后,将code请求后端
//上述是获取token的,sppid,和secret我上面已经发过怎么获取了
//获取到token后,在将token放入上述链接,就可以获取到本机手机号了 下面是具体代码
/**
* 绑定手机号
*/
public function loginDo(){
$code = \request()->get('code');
$appid = 'wxf095686f4b4d0528';
$secret ='a1fc49d593bccbf0df19cee4191c0c2d';
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$secret";
$url = file_get_contents($url,true);
$access_token = json_decode($url,true);
$token = $access_token['access_token'];
$urlinfo = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=$token";
$data = ['code'=>$code];
$requ = json_encode($data);
$con = stream_context_create(['http'=>['method'=>"POST",'header'=>"Content-type:application/json",'content'=>$requ]]);
$urlInfo = file_get_contents($urlinfo,false,$con);
$urls=json_decode($urlInfo,true);
return json_encode(['code'=>200,'msg'=>'成功','data'=>$urls]);
}
//获取到手机号后返回前端(这个跟上面发的前端一样我只讲下逻辑),返回成功后将手机号和id请求后端文章来源:https://www.toymoban.com/news/detail-491871.html
/**
* 一键获取手机号
*/
getPhoneNumber (e) {
var code = (e.detail.code)
wx.request({
url: 'http://www.yq.com/index.php/api/loginDo',
data:{
code:code
},
success:function(res){
var phone = (res.data.data.phone_info.phoneNumber)
//这是返回回来的token,通过wx.setStorageSync('key', data)存的,现在取出来,由于刚刚在静默登录的时候没有返回token,
//所以就以id=1为token,jwt不知道怎么弄的可以看我的博客
var id = 1
wx.request({
url: 'http://www.yq.com/index.php/api/phone',
data:{
id:id,
phone:phone
},
success:function(res){
console.log(res)
}
})
}
})
}
/**
* 绑定手机号
*/
public function phone(){
$id = \request()->get('id');
$phone = \request()->get('phone');
modeller::where('id',$id)->update([
'phone'=>$phone
]);
}
//感谢观看文章来源地址https://www.toymoban.com/news/detail-491871.html
到了这里,关于微信小程序静默登录+一键手机号绑定的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!