uniapp+php 微信小程序登录 获取openid
前端 uni.login(wx.login) 获取code
后端 jscode2session 验证code并获取openid
参考、非完整demo
uniapp代码:
const BASE_URL = "http://127.0.0.1/api/"; //接口地址
/**
* 封装请求
*/
export const myRequest = (options)=>{
return new Promise((resolve,rejecj)=>{
uni.request({
url:BASE_URL + options.url,
method:options.method || 'GET',
data:options.data || {},
dataType:"json",
header: {
"Content-Type": "application/x-www-form-urlencoded",
},
success: (res) => {
resolve(res)
},
fail: (err) => {
uni.showToast({
title:'请求接口失败',
icon:"error"
})
rejecj(err)
}
})
})
}
/**
* 微信小程序登录并获取用户信息
*/
export const wxlogin = ()=>{
return new Promise((resolve,rejecj)=>{
uni.login({
provider: 'weixin', //使用微信登录
success: function (loginRes) {
if(loginRes.code){
let data = {code:loginRes.code};
myRequest({
url:"api.php?act=getWxInfo",
data,
method:"POST"
}).then(res=>{
resolve(res)
}).catch(err=>{
rejecj(err)
});
}
},fail(err) {
rejecj(err)
}
});
})
}
php代码:
接收到code后获取openid
/**
* jscode2session
* 通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程
* https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html
*/
public function jscode2session($code = ""){
$api = "https://api.weixin.qq.com/sns/jscode2session?appid={$this->appid}&secret={$this->secret}&js_code={$code}&grant_type=authorization_code";
$reslut = file_get_contents($api);
$reslut_arr = json_decode($reslut,true);
if(!is_array($reslut_arr)){
return ['errcode' => -9999,'errmsg' => $reslut];
}
return $reslut_arr;
}
评论 (0)