为什么
为什么
  • 发布:2021-09-08 15:11
  • 更新:2021-12-11 17:42
  • 阅读:3572

【报Bug】uni.login中onlyAuthorize参数设置无效,app中微信登录依然不返回code

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10企业版

HBuilderX类型: 正式

HBuilderX版本号: 3.2.3

手机系统: Android

手机系统版本号: Android 9.0

手机厂商: 小米

手机机型: note8

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
     uni.login({  
                    provider:"weixin",  
                    onlyAuthorize:true,  
                    success(loginRes) {  
                        console.log("wxlogin",loginRes);  

                    let reqparam={  
                        code : loginRes.code,  
                        channel:that.$runplatform  
                    }  

                    },  
                    fail(e) {  
                        uni.showToast({  
                            title:"失败"+e.errMsg  
                        });  
                        console.log("登录失败");  
                        console.log(e);  
                    }  
             });

操作步骤:

在app 中调用微信授权登录 uni.login。设置参数为 onlyAuthorize:true
即可复现。返回值没有code还是 只有 authResult

预期结果:

返回 code.由服务端来换取openid和unionid

实际结果:
{  
    "authResult": {  
        "access_token": "48_v15-uMrU23CufomJX8BFsWNUz8yidvtA2S7-5-sDQcDEv8mfe6bGvjmWQNbwxWJNrKzN_2IcCMkOwt8o5HxT-mp-5iMsRguWVcbcEGjesYI",  
        "expires_in": 7200,  
        "refresh_token": "48_WVKEFnzl2aNclCn0gXyRV-JbJIA29JQobmU8tAq3i9ubFELmwYdt3BMiyTHLnvHS1RantZSxd0CgsAIXo7GkZ_YG2WphuVhkZeloPkFTNzs",  
        "openid": "oRrdQt1j9yAfQtgY4gDFJHLzxdsU",  
        "scope": "snsapi_userinfo",  
        "unionid": "oU5Yyt2blg4mHvRe8dJoz974RkAk"  
    },  
    "errMsg": "login:ok"  
}  

bug描述:

uni.login中的onlyAuthorize 参数 设置无效。
问题复现步骤:
在app中用微信登录。

    uni.login({  
                    provider:"weixin",  
                    onlyAuthorize:true,  
                    success(loginRes) {  
}  
});

此时loginres返回的依然是authresult没有code

2021-09-08 15:11 负责人:无 分享
已邀请:
者行孙

者行孙

+1,

希望官方能把该死的 appsecret 改成选填的,开启 onlyAuthorize 只拿 code 不应该填 appsecret

{  
    "code": -7,  
    "message": "业务参数配置缺失,http://ask.dcloud.net.cn/article/282"  
}
1***@qq.com

1***@qq.com

uni.login加了 onlyAuthorize: true后,调用uni.getUserInfo没有任何返回,很奇怪。不加就能正常调用,文档也没写清楚,有没有人知道咋整。

2***@qq.com

2***@qq.com - lq

同样遇到,怎么解决?!!!

  • 为什么 (作者)

    等官方修复,还有个问题:若关联了开放平台,有时候会返回unionid,有时候不会,哎。不知道咋绕过去

    2021-09-10 08:00

  • 2***@qq.com

    回复 为什么: 这个没发现,等不及了暂时直接把access_token和openid发后端去获取用户信息了

    2021-09-10 09:23

  • 为什么 (作者)

    回复 2***@qq.com: 我也是如此处理的,等不了了,只能改后端代码。直接把openid和unionid传后端处理的

    2021-09-14 09:09

Dorisup

Dorisup

我也遇到同样问题:

后面发现onlyAuthorize参数是要求版本 3.2.3 +,目前使用的最新版本是 3.2.3,于是下载3.2.6.20210901-alpha版本Hbuildx,重新打包自定义基座, 成功返回了code

1***@163.com

1***@163.com

相同的问题,怎么解决,想改安卓源码,github上代码却不是最新的

  • Dorisup

    我是换成alpha版本的Hbuildx开发工具,设置onlyAuthorize:true,,成功返回了code,现在我的版本是最新3.2.8.20210923-alpha,也不需要配置appsecret

    2021-09-27 16:17

  • 1***@163.com

    回复 Dorisup: enen 更新了3.2.6的基座和3.2.9的hbuilder后可以了

    2021-10-12 14:46

该问题目前已经被锁定, 无法添加新回复