app.js小程序的主入口文件 在这里引入文件需要的全局js文件
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.login
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