微信小程序> sendAjax.小程序登录封装

sendAjax.小程序登录封装

浏览量:4257 时间: 来源:haha有仙女

sendAjax

首先,会接受三个参数

第一个参数为请求前的必要的数据(接口地址,需传参数等)    默认method为POST(特别调整了method值传入为大写)        data为{}第二个参数为回调函数(在调用之前,成功后,完成后)        默认调用前加正在加载提示,防止重复点击            完成后关闭正在加载提示    (特别:调用前的回调,是自己加的。)第三个参数为需刷新的局部    防止整个页面刷新,少调几次后台

其次,调用前会确认是否有登录权限,或者G_authorization 的缓存信息

如果有G_authorization 的缓存信息或不需要登录权限,就是登录状态没问题,继续调用ajax否则去重新登录。(有G_authorization 的缓存信息:已有帐号才会有此变量)

最后,  成功,200 =》调用成功的回调函数
       401 =》登录失效,去重新登录
       其他 =》处理失败

失败 =》服务器连接失败完成 =》调用完成的回调函数

登录

login(拿到code)
用户同意            

=》 getUserInfo (用户基本信息)

=》换unionId,拿到用户信息,设置全局变量

=》判断全局变量G_authorization,没有

=》 增加新的小程序账户

=》 刷新局部,或当前页面

const HOST = require('../config.js')function sendAjax(options, callback, outTimeAuthCbOrNeedAuth) {    // 登录信息过期处理类型    const OTCB = outTimeAuthCbOrNeedAuth || function () { getCurrentPages().pop().onLoad(getCurrentPages().pop().options) }    const _sets = options    if (typeof _sets.type === 'undefined') { _sets.type = 'POST' }    if (typeof _sets.data === 'undefined') { _sets.data = {} }    // 如果不是明确不需要登录权限 而且 没有 G_authorization 的缓存信息     if (outTimeAuthCbOrNeedAuth !== false && !wx.getStorageSync('G_authorization')) {        getApp().uploadUserInfo(OTCB)        return    }    // 纠正method大写    _sets.type = _sets.type.toUpperCase();    const bcallback = callback.beforeSend || function (data) {        wx.showToast({            title: '正在加载...',            icon: 'loading',            duration: 10000        }) };    const scallback = callback.success || function (data) { };    const ccallback = callback.complete || function (data) { wx.hideToast() };    bcallback()    wx.request({        url: HOST + _sets.url,        method: _sets.type,        data: _sets.data,        header: {            'content-type': 'application/json',            'authorization': outTimeAuthCbOrNeedAuth !== false ?  wx.getStorageSync('G_authorization') : ''        },        success(res) {            if (res.data.code == 200) {                scallback(res.data)            } else {                if (res.data.code == 401) {                    getApp().uploadUserInfo(OTCB)                } else {                    wx.showModal({                        title: '提示',                        content: res.data.message || '处理失败',                        showCancel: false                    });                }            }        },        fail() {            wx.showModal({                title: '提示',                content: '服务器连接失败',                showCancel: false            });        },        complete() {            ccallback()        }    })}module.exports = sendAjax
//app.js/**      *      * 更新用户信息     * 1 授权登录     * 2 拿去用户信息     * 3 调用/user/account/platform/login 进行登录,有则拿取信息,无则进行注册     * 4 拿到用户信息后,没绑定手机号 单独在页面判断登录     * 5 老用户直接刷新页面,有自定义的回调就自定(cb),没有就刷新当前页面     *      */    uploadUserInfo(cb) {        const that = this        wx.showNavigationBarLoading()        wx.login({            success: (loginResult) => {                that.globalData.platCode = loginResult.code                wx.showNavigationBarLoading()                wx.getUserInfo({                    success: (userResult) => {                        // 拿取登录换取unionId 必要参数                        let platUserInfoMap = that.globalData.platUserInfoMap                        platUserInfoMap["encryptedData"] = userResult.encryptedData                        platUserInfoMap["iv"] = userResult.iv                        that.globalData.platUserInfoMap = platUserInfoMap                        wx.showNavigationBarLoading()                        wx.request({                            url: HOST + '/user/account/platform/login',                            method: 'POST',                            data: {                                platType: that.globalData.platType,                                platCode: that.globalData.platCode,                                platUserInfoMap: that.globalData.platUserInfoMap,                                weixinAppType: 3                            },                            header: {                                'content-type': 'application/json'                            },                            success: (res) => {                                if (res.data.code == "200") {                                    that.globalData.unionId = res.data.unionId                                    // 更新全局数据                                    wx.setStorageSync("G_unionId", res.data.unionId)                                    wx.setStorageSync("G_userKey", res.data.userKey)                                    wx.setStorageSync("G_nickName", res.data.userName)                                    wx.setStorageSync("G_avatar", res.data.avatar)                                    wx.setStorageSync("G_isBind", res.data.isBind)                                    wx.setStorageSync("G_userId", res.data.userId)                                    wx.setStorageSync('G_authorization', res.data.authorization)                                    // 没绑定手机号 单独在页面判断登录                                    if (res.data.authorization == "") {                                        wx.showNavigationBarLoading()                                        wx.request({                                            url: HOST + '/user/account/weixinapp',                                            method: 'POST',                                            data: {                                                unionId: res.data.unionId,                                                nickName: res.data.userName,                                                headimgurl: res.data.avatar                                            },                                            header: {                                                'content-type': 'application/json'                                            },                                            success: (resp) => {                                                if (resp.data.code == 200) {                                                    wx.setStorageSync('G_authorization', resp.data.authorization)                                                    if (typeof cb === 'function') {                                                        cb();                                                    } else {                                                        //获取当前页面,并刷新                                                        getCurrentPages().pop().onLoad(getCurrentPages().pop().options)                                                    }                                                }                                                else {                                                    wx.showModal({                                                        title: '提示',                                                        content: resp.data.message,                                                        showCancel: false                                                    });                                                }                                            },                                            fail: () => {                                                wx.showModal({                                                    title: '提示',                                                    content: '服务器连接失败',                                                    showCancel: false                                                });                                            },                                            complete: () => {                                                wx.hideNavigationBarLoading()                                            }                                        })                                        // } else if (wx.getStorageSync("G_isBind") != 1) {                                        //     wx.showModal({                                        //         title: '提示',                                        //         content: '请先绑定手机号,体验布管家全套纺织管理服务',                                        //         showCancel: false,                                        //         success: (res) => {                                        //             wx.navigateTo({                                        //                 url: '/page/center/bindPhone',                                        //             })                                        //         }                                        //     });                                    } else {                                        if (typeof cb === 'function') {                                            cb();                                        } else {                                            //获取当前页面,并刷新                                            getCurrentPages().pop().onLoad(getCurrentPages().pop().options)                                        }                                    }                                } else {                                    wx.showModal({                                        title: '提示',                                        content: res.data.message,                                        showCancel: false                                    });                                }                            },                            fail() {                                wx.showModal({                                    title: '提示',                                    content: '服务器连接失败',                                    showCancel: false                                });                            },                            complete: () => {                                wx.hideNavigationBarLoading()                            }                        })                    },                    fail: (userError) => {                        wx.showModal({                            title: '提示',                            content: '若不授权微信登录,则无法使用相关功能;点击重新获取授权,则可重新使用。',                            cancelText: "不授权",                            confirmText: "授权",                            success: (res) => {                                if (res.confirm) {                                    wx.openSetting({                                        success: (res) => {                                            if (res.authSetting["scope.userInfo"]) {                                                //获取当前页面,并刷新                                                getCurrentPages().pop().onLoad(getCurrentPages().pop().options)                                            }                                        }                                    });                                } else if (res.cancel) {                                    // 同今天及,哦同里 恩 段 义 绝                                    wx.showModal({                                        title: '提示',                                        content: '未授权,无法流畅使用主要功能',                                        showCancel: false                                    });                                }                            }                        });                    },                    complete: () => {                        wx.hideNavigationBarLoading()                    }                });            },            fail: function (loginError) {                wx.showModal({                    title: '提示',                    content: '微信登录失败,请检查网络状态',                    showCancel: false,                    success: (e) => {                        console.log('微信登录失败', e)                    }                });            },            complete: () => {                wx.hideNavigationBarLoading()            }        });    },

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎