uni-app关于小程序及app端第三方微信登陆问题(app端如何取得code值)

加强安全保护,防止部分应用邀请新用户有奖励而产生的刷号行为,和后端配合,不从前端传openid,取得相应的code值给后端,后端再去拿到openid获取用户信息。
1.第三方微信登陆,主要是在获取code的时候感觉头痛,uni-app没有说明如何获取code,后来在网上搜索诸多信息后终于解决了问题

uni-app在app端第三方微信登陆时要获取code再传给后端,后端根据code向微信发送登陆请求:


// #ifdef APP-PLUS
login() {
    var it=this;
    var getAppid = plus.runtime.appid;
    console.log(‘app端登陆’)
    uni.login({
    provider: ‘weixin’,
    success: function (loginRes) {
    console.log(JSON.stringify(loginRes.authResult));
    uni.showModal({
    content: JSON.stringify(loginRes.authResult),
    cancelText: “我再想想”,
    cancelColor: “#999”,
    confirmText: “转让”,
    confirmColor: “#DEC17C”,
    success: function(res) {              
      }
                })
              }
            });
            var weixinService = null;
            // http://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.getServices
            plus.oauth.getServices(function(services) {
                console.log(312589340656548)
                console.log(services)
                if (services && services.length) {
                    for (var i = 0, len = services.length; i < len; i++) {
                        if (services[i].id === 'weixin') {
                            weixinService = services[i];
                            console.log('授权对象')
                            console.log(weixinService)
                            break;
                        }
                    }
                    if (!weixinService) {
                        console.log('没有微信登录授权服务');
                        return;
                    }
                    // http://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.AuthService.authorize
                    weixinService.authorize(function(event) {  //此处获取code的关键
                        console.log(event)
                        console.log(event.code,'这次是真的授权后返回的code')
                        it.weixinCode = event.code; //用户换取 access_token 的 code
                        // it.requestLogin();
                        let data={code: it.weixinCode};
                        it.$api.user.login.getWeiXinCode(data).then(function(userInfo) {
                            console.log('是否走到这里')
                                console.log('第三方登录授权',it.weixinCode)
                                console.log('第三方登录授权1111',userInfo)
                                it.$store.commit('isLogged', true);
                                it.$store.commit('user', {});
                                it.$store.commit('user', userInfo.data);
                                uni.navigateBack()
                            }).catch(res => {
                            console.log(res)        
                                });
                        
                    }, function(error) {
                        console.error('authorize fail:' + JSON.stringify(error));
                    }, {
                        // http://www.html5plus.org/doc/zh_cn/oauth.html#plus.oauth.AuthOptions
                        appid: getAppid, //开放平台的应用标识。暂时填个假的充数,仅做演示。
                    });
                } else {
                    console.log('无可用的登录授权服务');
                }
            }, function(error) {
                console.error('getServices fail:' + JSON.stringify(error));
            });
        },
        // #endif
    

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值