要求能把用户昵称、头像以及open_id写入数据库,服务端保持用户登录状态
wxml:
<block wx:else>
<button type="primary" open-type="getUserInfo" bind:tap="login">授权登录</button>
</block>
wxjs:
// index.js
// 获取应用实例
const app = getApp()Page({
data: {
state:false
},
onReady:function(){
var uid=wx.getStorageSync('uid');
if (uid) {
this.setData({
state:true
})
}
},
login(evt){
var that=this;
// wx.getUserProfile获取用户信息
wx.getUserProfile({
// desc 声明获取用户个人信息后的用途,不超过30个字符
desc: 'desc',
success:res=>{ if (res.userInfo) {
/* wx.login 调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid)、微信开放平台帐号下的唯一标识(unionid,若当前小程序已绑定到微信开放平台帐号)及本次登录的会话密钥(session_key)*/
wx.login({
success:ret=>{
// 获取code
var code=ret.code;
// 获取用户昵称
var nickName=res.userInfo.nickName;
// 获取用户照片
var avatarUrl=res.userInfo.avatarUrl;
// 发送至php后端
wx.request({
url: 'http://www.tp6.com/api/v1/wxAuthorizationLogin', //仅为示例,并非真实的接口地址
data: {
code:code,
nickName:nickName,
avatarUrl:avatarUrl
},
method:"POST",
header: {
'content-type': 'application/json' // 默认值
},
// 数据返回json格式
success (re) {
// console.log(re.data)
// 将用户id储存于本地
wx.setStorageSync('uid', re.data.data);
that.setData({
state:true
})
wx.switchTab({
// 跳转至首页
url: '/pages/index/index',
})
}
}) }
})
}
}
})
}})
php控制器代码:
// 接受微信小程序的发送的接口
public function wxAuthorizationLogin(Request $request){
$params=$request->post();
print_r($params);die;
// 获取appid
$appid = "wx8dbfb7178d00fe05";
// 从微信公众平台获得secret
$secret = "4960b93dde48a2cbb822b4fef7e66b6f";
// 发送请求换取openid和sessionkey
$url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=".$params['code']."&grant_type=authorization_code";
// 暂使用file_get_contents()发送请求,你可以使用CURL扩展的形式实现
$res = json_decode(file_get_contents($url),true);
$params['openid']=$res['openid']; $getUserInfo=User::getUserInfo($res['openid']);
if ($getUserInfo){
// 根据用户id进行修改
$params['id']=$getUserInfo['id'];
User::updUser($params);
$uid=$getUserInfo['id'];
}else{
// 第一次登陆 获取用户信息并添加入库
$addUser=User::addUser($params);
// 取出$UID=发送自后台
$uid=$addUser['id'];
}
return jsonData(200,'ok',$uid);
}
//判断用户是否登录
public function isLogin(Request $request){
$uid=$request->post('uid');
$getUserInfos=User::getUserInfos($uid);
if ($getUserInfos){
return jsonData(200,'ok');
} }
php模型代码:
// 添加入库
public static function addUser($params){
return self::create($params);
}
//修改头像及昵称
public static function updUser($params){
return self::update($params);
}
public static function getUserInfos($uid){
return self::find($uid);
}
// 判断用户是否登录模型代码
public static function getUserInfo($openid){
return self::where('openid',$openid)->find();
}