参考网址
http://caibaojian.com/wx-getuserinfo.html
https://www.cnblogs.com/xiaohuizhang/p/9072236.html
刚刚接触小程序,记录一下
页面
<view class="grid">
<button class="btn phonelogin" bindtap="getstorg" data-statu="open">微信号快速登录
</button>
</view>
js
Page({
data: {
isLogin:false,
user_info:[],
showModalStatus:false
},
onLoad: function (options) {
},
onShow:function(){
var user_info = wx.getStorageSync('user_info')
if (user_info == '') {
// console.log(1)
} else {
this.setData({
user_info: user_info,
isLogin:true
})
}
},
// 微信登录
getstorg:function(){
var that = this
wx.login({
success: res => {
console.log('微信登录');
// console.log(res.code);
wx.request({
url: 'https://...www/XccCheck/getCodeAccessToken',
data: {
'code': res.code
},
method: 'GET',
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function (res) {
console.log('请求code');
console.log(res.data.status);
if (res.data.status == 1) {
wx.setStorageSync('user_info', res.data.info)
// 登录成功之后更改状态
that.setData({
showModalStatus: false,
isLogin: true,
user_info: res.data.info,
})
}
},
fail: function (err) {
console.log(err);
}
})
}
})
},
控制器
public function getCodeAccessToken(){
$code = $_GET['code'];
$appid = self::$appid;
$secret = self::$secret;
$url = 'https://api.weixin.qq.com/sns/jscode2session?appid='. $appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';
// 报错 40029 配置信息错误 报错 40163 信息已被使用
// 产生40029错误,是因为获取code的那一步跳转出问题,code已经过期,再传到下一步,当然提示code无效啦!
$result = $this->curl_get($url); // 两种方法都返回
// session(['sessionKey'=>$res,'expire'=>7200]);
$ss_model = M('Sessionkey');
$session_key = $result['session_key'];
$openid = $result['openid'];
$str = $session_key.$openid;
$info = array(
'sessionkey'=>$session_key,
'openid'=>$openid,
'return_session'=>$str
);
// 添加进 red_sessionkey 表 而 :Column 'sessionkey' cannot be null
$result = $ss_model->add($info);
if($result){
$arr = array(
'msg'=>'session_key保存成功',
'status'=>1,
'session_id'=>$result
);
$this->ajaxReturn($arr,'JSON');
}
}
// 请求接口调用的方法,传入url参数即可
public function curl_get($url)
{
$info = curl_init();
curl_setopt($info,CURLOPT_RETURNTRANSFER,true);
curl_setopt($info,CURLOPT_HEADER,0);
curl_setopt($info,CURLOPT_NOBODY,0);
curl_setopt($info,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($info,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($info,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($info,CURLOPT_URL,$url);
$output = curl_exec($info);
curl_close($info);
return $output;
}