大家好,又见面了,我是你们的朋友全栈君。
这里简单介绍用php后台实现获取openid并保存到数据库;
微信的登陆流程是这样的
首先前端发送请求到服务器:
wx.login({
success: function (res) {
var code = res.code;//发送给服务器的code
wx.getUserInfo({
success: function (res) {
var userNick = res.userInfo.nickName;//用户昵称
var avataUrl = res.userInfo.avatarUrl;//用户头像地址
var gender = res.userInfo.gender;//用户性别
if (code) {
wx.request({
url: ‘http://localhost/test/getopenid.php’,//服务器的地址,现在微信小程序只支持https请求,所以调试的时候请勾选不校监安全域名
data: {
code: code,
nick: userNick,
avaurl: avataUrl,
sex: gender,
},
header: {
‘content-type’: ‘application/json’
},
success: function (res) {
console.log(res.data);
wx.setStorageSync(‘name’, res.data.name);//将获取信息写入本地缓存
wx.setStorageSync(‘openid’, res.data.openid);
wx.setStorageSync(‘imgUrl’, res.data.imgurl);
wx.setStorageSync(‘sex’, res.data.sex);
}
})
}
else {
console.log(“获取用户登录态失败!”);
}
}
})
},
fail: function (error) {
console.log(‘login failed ‘ error);
}
})
这样就实现了将前端获取的code发送到服务器,code每次获取的都不一样;
服务器getopenid.php代码:
text();
function text()
{
code = _GET[‘code’];//小程序传来的code值
nick = _GET[‘nick’];//小程序传来的用户昵称
imgUrl = _GET[‘avaurl’];//小程序传来的用户头像地址
sex = _GET[‘sex’];//小程序传来的用户性别
url = ‘https://api.weixin.qq.com/sns/jscode2session?appid=yourAppid&secret=appSecret&js_code=’ .
//yourAppid为开发者appid.appSecret为开发者的appsecret,都可以从微信公众平台获取;
info = file_get_contents(url);//发送HTTPs请求并获取返回的数据,推荐使用curl
json = json_decode(info);//对json数据解码
arr = get_object_vars(json);
openid = arr[‘openid’];
session_key = arr[‘session_key’];
$con = mysqli_connect(‘localhost’, ‘root’, ‘123’);//连接数据库
if ($con) {
if (mysqli_select_db($con, ‘students’)) {
sql1 = “select * from weixin where openid = ‘openid'”;
result = mysqli_query(con,
result = mysqli_fetch_assoc(result);
if ($result!=null) {//如果数据库中存在此用户的信息,则不需要重新获取
result = json_encode(result);
echo $result;
}
else {//没有则将数据存入数据库
if ($sex == ‘0’) {
$sex = ‘none’;
} else {
$sex = ‘1’ ? ‘man’ : ‘women’;
}
sql = “insert into weixin values (‘nick’,’openid’,’session_key’,’imgUrl’,’sex’)”;
if (mysqli_query(con, sql)) {
arr[‘nick’] = nick;
arr[‘imgUrl’] = imgUrl;
arr[‘sex’] = sex;
arr = json_encode(arr);
echo $arr;
} else {
die(‘failed’ . mysqli_error($con));
}
}
}
} else {
die(mysqli_error());
}
}
?>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/192503.html原文链接:https://javaforall.cn