微信登录
微信登录面对的问题: 怎么获取用户在微信的信息怎么获取小程序用户的唯一身份标志获取openid的方法
wx.login() 方法可以获取微信登录凭证code使用code 可以向微信服务器换取微信用户的唯一识别标志openid 微信服务器提供的接口地址:https://api./sns/jscode2session?appid=<AppId>&secret=<AppSecret>&js_code=<code>&grant_type=authorization_code
AppId和AppSecret 是为了确保用code换openid的人是当前小程序的开发者AppId 是公开信息,泄露AppId不会带来安全风险
AppSecret 是小程序秘钥,不能泄露,如果发现泄露需要到小程序管理平台进行重置。
login.wxml
<view class="cont"><view wx:if="{{hasUserInfo}}">{{userInfo.nickName}}您好,欢迎{{type}}</view><view wx:else><text>您好,请登录</text><button type="primary" open-type="getUserInfo" bindgetuserinfo="getUserInfo">去授权</button></view></view>
login.js
// index.js// 获取应用实例const app = getApp()Page({data: {userInfo: {},hasUserInfo: false,type:''},onLoad() {if (app.globalData.userInfo) {this.setData({userInfo: app.globalData.userInfo,hasUserInfo: true})} else if (this.data.canIUse) {// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回// 所以此处加入 callback 以防止这种情况app.userInfoReadyCallback = res => {this.setData({userInfo: res.userInfo,hasUserInfo: true})}} else {// 在没有 open-type=getUserInfo 版本的兼容处理wx.getUserInfo({success: res => {app.globalData.userInfo = res.userInfothis.setData({userInfo: res.userInfo,hasUserInfo: true})}})}},// 获取用户信息 getUserInfo 固定函数getUserInfo({detail:{userInfo}}) {console.log(userInfo);this.setData({userInfo,hasUserInfo:true})this.getCode().then(code=>this.getOpenId(code)).then(openid=>this.putOpenid(openid)).then(data=>{console.log(data);});},// 获取登录凭证codegetCode(){return new Promise((resolve)=>{wx.login({success:({code})=>{console.log(code);resolve(code);},})})},// 发送code到微信后台获取openIdgetOpenId(code){const url = `https://api./sns/jscode2session?appid=你的openid&secret=你的密钥&js_code=${code}&grant_type=authorization_code`;// 发起网络请求return new Promise((resolve)=>{wx.request({url,success:({data:{openid}})=>{resolve(openid);console.log(openid);}})})},// openid传给后端putOpenid(openid){const data = Object.assign({openid},this.data.userInfo)return new Promise((resolve)=>{wx.request({url: 'http://localhost:8080/',method:'POST',data,success({data}){resolve(data)}})})}})