app.js小程序的主入口文件 在这里引入文件须要的全局js文件html
var Api = require('utils/api.js');//接口 var util = require('utils/util.js');//工具类 var wxApi = require('utils/wxApi.js') var wxRequest = require('utils/wxRequest.js')
主入口js处理登陆问题小程序
App({ globalData: {//全局变量 userInfo: null, unionId: '' }, onLaunch: function () { // 打开调试 //wx.setEnableDebug({ //enableDebug: true //}) // 展现本地存储能力 var logs = wx.getStorageSync('logs') || [] logs.unshift(Date.now()) wx.setStorageSync('logs', logs) // 登陆 //wxml文件,弄一个button按钮便可 //在console控制台查看数据 //调用登陆接口 wx.login({ success: function (login) { //成功,返回登陆凭证js_code var js_code = login.code; var session_key; console.log("js_code=" + js_code); wx.request({ url: 'https://api.weixin.qq.com/sns/jscode2session', data: { grant_type: 'e', js_code: js_code, appid: '', secret: '' }, success: function (data) { //debugger; session_key = data.data.session_key; //调用获取用户信息接口 wx.getUserInfo({ data: { withCredentials: true }, success: function (res) { //成功,获取解密相关的用户信息 var encryptedData = res.encryptedData; //AES密文 var iv = res.iv; //AES初始向量 //调用网络请求接口 //把js_code、AES密文、AES初始向量发送到服务器 var getUserEncryptedDataParmare = { sessionKey: session_key, encryptedData: encryptedData, iv: iv }; var getPostsRequest = wxRequest.getRequest(Api.getUserEncryptedData(), getUserEncryptedDataParmare); //debugger; getPostsRequest.then(response => { if (response.data.code == '200') { //debugger; //成功,返回解密后的用户敏感信息 console.log(response.data); //debugger; var body = response.data.body; var obj = JSON.parse(body); var unionId = obj.unionId; console.log(unionId); //请求三方登录接口 var getLoginThirdPartyParmare = { thirdPartyId: unionId, type: 0 }; var getLoginThirdPartyRequest = wxRequest.postRequest(Api.loginThirdParty(), getLoginThirdPartyParmare); getLoginThirdPartyRequest.then(response => { console.log(response.data); //debugger; var user = response.data.body.user; console.log(user); wx.setStorage({ key: 'user', data: user, }) wx.getStorage({ key: 'user', success: function (res) { console.log("昵称:"+res.data.nickName); }, }) //this.globalData.userInfo = user; }) } }) } }) } }) } }); // 获取用户信息 wx.getSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 已经受权,能够直接调用 getUserInfo 获取头像昵称,不会弹框 wx.getUserInfo({ success: res => { // 能够将 res 发送给后台解码出 unionId this.globalData.userInfo = res.userInfo // 因为 getUserInfo 是网络请求,可能会在 Page.onLoad 以后才返回 // 因此此处加入 callback 以防止这种状况 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) } } }) } } }) } })
微信登陆wx.loginapi
https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject wxchecksessionobject https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxchecksessionobject 用户数据的签名验证和加解密 https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html 微信受权wx.authorize https://mp.weixin.qq.com/debug/wxadoc/dev/api/authorize.html#wxauthorizeobject 用户信息 https://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html#wxgetuserinfoobject服务器