小程序实现授权完整流程

 

小程序html页面

<view class="container2">
    <view style='width:100%;padding-left:30rpx;font-size: 28rpx;margin-top:30rpx;' class="item">1、同意当前小程序获取我的微信头像;</view>
    <view style='width:100%;padding-left:30rpx;font-size: 28rpx;margin-top:30rpx;' class="item">2、同意当前小程序获取我的微信昵称等其他信息;</view>
    <button open-type="getUserInfo" bindgetuserinfo="getInfo" class="save-btn">授权登录</button>
</view>

小程序js页面

const util = require('../../utils/util.js');
Page({
    data: {

    },
    onLoad: function (options) {

    },
    getInfo(e){
        if(!e.detail.userInfo){
            wx.showModal({
                title: '提示',
                content: '您拒绝了授权部分功能无法使用',
                showCancel: false
            })
            return;
        }else{
            wx.setStorageSync('userInfo', e.detail.userInfo);
            this.login()
        }
    },
    login(){
        let token = wx.getStorageSync('token');
        console.log(token)
        let tokenStr = util.baseApi2 +'/user/check-token';
        let loginStr = util.baseApi2+'user/wxapp/login';
        let that = this;
        if(token){
            util.fetchData2(tokenStr,{token}).then((res)=>{
                if(res.code!=0){
                    wx.removeStorageSync('token');
                    that.login();
                }else{
                    wx.navigateBack({});
                }
            })
        }else{
            wx.login({
                success: (res)=>{
                    util.fetchData2(loginStr,{code: res.code,type: 2}).then((data)=>{
                        console.log(data)
                        if(data.code==1000){
                            that.register()
                        }else if(data.code!=0){
                            wx.showModal({
                                title: '提示',
                                content: '请求出错',
                                showCancel: false
                            })
                            return;
                        }else{
                            wx.setStorageSync('token', data.data.token);
                            wx.setStorageSync('uid', data.data.uid);
                            wx.navigateBack({
                                
                            })
                        }
                    })
                }
            })
        }
    },
    register(){
        let that = this;
        let regStr = util.baseApi2+'/user/wxapp/register/complex';
        wx.login({
            success: (res)=>{
                let code = res.code;
                wx.getUserInfo({
                    success: (data)=>{
                        let iv = data.iv;
                        let encryptedData = data.encryptedData;
                        util.fetchData2(regStr,{
                            code,
                            iv,
                            encryptedData
                        }).then((res)=>{
                            that.login();                 
                        })
                    }
                })
            }
        })
    }
})

注意部分接口来自于api工厂

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值