const request = require('./WXHttpRequest.js'); const url = require('./const.js'); const util = require('./util.js'); const HOST = url.apiUrl; const HOSTTwo = url.apiUrlTwo; function genAPIUrl(action) { return HOST + action; } // 登录 function wxLogin(successcallback, failcallback) { wx.showToast({ title: '登录中...', icon: 'loading', duration: 1500 }) wx.login({ success: function(res) { if (res.code) { // 获取openid let url = genAPIUrl('wx/ucenter/openId') let data = { code: res.code } return request.getInstance().url(url).data(data).send().success(successcallback).fail(failcallback); } else { console.log('获取用户登录态失败!' + res.errMsg) } } }) } // 获取原来的 openid 和 session_key function getOpenidSessionKey(successcallback, failcallback) { if (wx.getStorageSync('user')) { successcallback( wx.getStorageSync('user'), //分享小程序按钮 wx.showShareMenu({ withShareTicket: true }) ); return; } wxLogin(function(res) { //console.log('获取sessionKey等内容'+JSON.stringify(res.data)); let sessionKey = JSON.parse(res.data).session_key; let openId = JSON.parse(res.data).openid; getLoginSchedule(sessionKey, openId, successcallback, failcallback, false); },function(res) { failcallback(res); }) } // 获取另一个的 openid 和 session_key function getOpenidSessionKeyTwo(successcallback, failcallback) { if (wx.getStorageSync('userInfo')) { successcallback( wx.getStorageSync('userInfo'), //分享小程序按钮 wx.showShareMenu({ withShareTicket: true }) ); return; } wxLogin(function(res) { //console.log('获取sessionKey等内容'+JSON.stringify(res.data)); let sessionKey = JSON.parse(res.data).session_key; let openId = JSON.parse(res.data).openid; getLoginSchedule(sessionKey, openId, successcallback, failcallback, true); },function(res) { failcallback(res); }) } //登录 function getLoginSchedule(sessionKey, openId, successcallback, failcallback, affirm) { wx.getSetting({ success: function(res) { // 已经授权,可以直接调用 getUserInfo 获取头像昵称 wx.getUserInfo({ success: function (res) { let userInfo = res.userInfo; if(affirm) { let nickName = userInfo.nickName let avatarUrl = userInfo.avatarUrl let dataUrl = `openId=${openId}&nickName=${encodeURIComponent(nickName)}&avatar=${avatarUrl}` wx.request({ url: `${HOSTTwo}wx/user`, data: dataUrl, method: 'POST', header: { 'content-type': 'application/x-www-form-urlencoded' }, success: function(res) { console.log(res.data.data, '----注册返回----') wx.setStorageSync('userInfo', res.data.data) util.hideToast() util.showToast('登录中成功', true, 'success', 500) successcallback(res); }, fail: function(res) { console.log(res, '----注册失败返回----') failcallback(res); } }) }else { let url = genAPIUrl('wx/ucenter/user/loginRegist'); const userData = { encryptedData: res.encryptedData, sessionKey: sessionKey, iv: res.iv, dist: '1133', headimgurl: userInfo.avatarUrl } request.getInstance().url(url).data(userData).method('GET').send().success(res => { wx.hideToast() wx.showToast({ title: '登录成功', icon: 'success', duration: 1500 }) wx.setStorageSync('uid', res.data.data.uid) wx.setStorageSync('user', res) successcallback(res) }); } }, fail: function(res) { failcallback(res) } }) } }) } module.exports = { getOpenidSessionKey, getOpenidSessionKeyTwo }