步骤
- 调用 wx.login 获取 code
- 请求 https://api.weixin.qq.com/sns/jscode2session 获取openId
撸码:
- wxLogin.js 工具类
module.exports={
getWxUserInfo
}
/**
* successCallBack 获取opendId成功回调
* failCallBack 获取opendI失败回调
*/
function getWxUserInfo(successCallBack,failCallBack){
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey
console.log(res.code)
if (res.code) {
console.log(res.code)
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session', //微信服务器获取appid的网址
method: 'post',
data: {
js_code: res.code,
appid:'xxxxxxxxxx', // you appId
secret:'xxxxxxxxx', //you secret
grant_type: 'authorization_code'
},
header: {
'content-type': 'application/x-www-form-urlencoded',
},
success: function (response) {
console.log(response.data)
console.log("openId " + response.data.openid + " key :" + response.data.session_key);
successCallBack(response);
},
fail:res=>{
failCallBack(res);
}
})
} else {
console.log("登录失败");
}
},
fail:res=>{
failCallBack(res);
}
})
}
调用
var utilwx=require('xxx/wxLogin.js'); //注意路径
Page({
data:{
},
onLoad:function(options){
},
bindGetUserInfo :function(e){
var that=this;
// 查看是否授权
wx.getSetting({
success(res) {
if (res.authSetting['scope.userInfo']) {
// 已经授权
utilwx.getWxUserInfo(that.getUserInfoSuccessCallBack, that.getUserInfoFailCallBack);
}else{
console.log("未授权");
}
}, fail: function(){
wx.showModal({
title: '',
content: '授权个人信息',
success:function(res){
if(res.confirm){
if (res.authSetting["scope.userInfo"]) {////如果用户重新同意了授权登录
utilwx.getWxUserInfo(that.getUserInfoSuccessCallBack, that.getUserInfoFailCallBack);
}
}
},fail:function(res){
}
})
}
})
},
/**
* 获取openId成功
*/
getUserInfoSuccessCallBack: function(res) {
wx.showToast({
title: '成功 !',
icon: 'success'
})
},
/**
* 获取openId失败
*/
getUserInfoFailCallBack: function(res) {
wx.showToast({
title: '失败!',
icon:'none'
})
},
})
wxml
<button open-type="getUserInfo" bindtapWx="bindGetUserInfo">获取openId</button>
天坑:
res.authSetting['scope.userInfo'] 并不能调起授权窗口,已弃用。
只能在wxml 中通过button 的 open-type="getUserInfo" 调起
提示:
这里全在客户端实现获取敏感信息,考虑到安全问题,第二步请求应该放到后台处理
网友评论