微信小程序app.js调用wx.login 您所在的位置:网站首页 微信里面的小程序在哪里 微信小程序app.js调用wx.login

微信小程序app.js调用wx.login

2024-07-13 01:37| 来源: 网络整理| 查看: 265

只为梳理一下自己调用微信登陆的思路 先做一个简单的封装,将接口地址存到变量中,方便调用。 在utils中建立一个文件constant.js

var rqcfg = { domin: 'https://abc.com', rqurl: 'https://abc.com/applet.php?', //示例接口 version:'1.0.0', appid: 'wx11111111111111', suid:'' }; module.exports = { rqcfg: rqcfg }

在app.js中引用该文件

var rqcfg = require('./utils/constant.js'); App({ onLaunch: function () { rqcfg.rqcfg.rqurl = rqcfg.rqcfg.rqurl + 'suid=' + suid + '&appid=' + appid; this.globalData.requestUrl = rqcfg.rqcfg.rqurl; //后台接口地址 this.globalData.appid = appid; this.wechatSq(); }, //全局数据 globalData: { requestUrl:'', domin: rqcfg.rqcfg.domin, //域名地址 isnewPlay: false, plumSession:'' }, //微信登陆 wechatSq: function (obj) { var that = this; wx.showLoading({ title: '加载中', }) //调用api wx.login({ success: function (res) { var code = res.code; //登录凭证(code) if (res.code) { var data = { map: 'applet_member_info', //登陆获取用户信息接口 code: code, slient: 1, //0不是静默方式授权,1是静默方式授权 } //传递code到服务器端 wx.request({ //get方式传递数据,将接口地址与要传递的数据写在data中 url: rqcfg.rqcfg.rqurl, data: data, success: function (res) { if (res.data.ec == 200) { //调用接口成功 console.log("获取用户信息成功"); that.globalData.requestUrl = rqcfg.rqcfg.rqurl + '&plum_session_applet=' + res.data.data.plum_session_applet; //plum_session_applet为后台生成的用户id,将用户id拼接到接口后,方便后续使用 //存入缓存中备用 wx.setStorage ({ key: "plumSession", data: res.data.data.plum_session_applet, success: function () { console.log('成功') that.globalData.plumSession = res.data.data.plum_session_applet; } }) //由于这里是网络请求,可能会在 Page.onLoad 之后才返回, //若是idnex.js检测不到that.globalData.plumSession , //会再次调用wx.login接口,浪费资源 //所以先检测回调函数是否被创建,若未被创建代表index.js的onLoad还未执行, //直接设置 that.globalData.plumSession , //若回调函数已经创建,表示idnex的onLoad函数已经执行调用回调函数将plumSession传递 if (that.plumSessionCallback) { that.plumSessionCallback(res.data.data.plum_session_applet); }else{ that.globalData.plumSession = res.data.data.plum_session_applet; } //到此时已经登陆成功了 } else { console.log(res.data); console.log("获取用户信息失败"); } }, complete: function () { console.log("执行完成"); wx.hideLoading(); } }); } else { //若没有获取到登陆code wx.showToast({ title: '获取用户登录态失败!' + res.errMsg, icon: 'none', duration: 2000 }) } }, fail: function (res) { wx.showToast({ title: '用户code获取失败!' + res.errMsg, icon: 'none', duration: 2000 }) } }); }, })

为了防止app.js中登陆失败,在index.js中再次检测plumSession是否存在

//index.js onShow: function () { var that = this; console.log(app.globalData.plumSession); //wx.login是异步函数、此时可能获取不到值 if (!app.globalData.plumSession) { //未检测到 that.globalData.plumSession //创建 app.plumSessionCallback 的回调函数,将plumSession作为函数参数,app.js中检测到函数被创建, app.plumSessionCallback = plumSession => { if (plumSession!=''){ console.log('查询到登录信息'); }else{ console.log('未查询到登录信息'); app.wechatSq(that); } } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有