steven888
steven888
  • 发布:2021-04-18 10:29
  • 更新:2021-04-28 10:09
  • 阅读:1517

uniapp 微信登录 ios Oauth代码中的动态设置appid不生效

分类:uni-app

在manifest.json 微信登录设置错误的appid 在Oauth里面设置微信登录正确的appid,安卓可以微信登录 ios就不可以

求官方给一个回复,这个bug太明显了,ios动态设置不了微信登录appid 返回错误


官方都说了可以js动态设置appid


为什么设置了还是报错啊

plus.oauth.getServices(success => {
console.log('getServices', success)
success.forEach((item, index) => {
if (success[index].id == 'weixin') {
console.log('success[index].', success[index])
success[index].login(function(e) {
console.log(e)
}, function(err) {
console.log(err.message)

                    }, {  
                        scope:'snsapi_userinfo',  
                        appid: 'wxxxxxxxxxxxxxxx'  
                    })  
                }  
            })  
        }, error => {  

})

2021-04-18 10:29 负责人:DCloud_iOS_XHY 分享
已邀请:
DCloud_iOS_XHY

DCloud_iOS_XHY

如果不想在app端传 appSecret 正确做法是调用 authorize方法获取 code,authorize 方法只需要appid即可,然后将code传递给后端,剩下的流程都交给后端服务完成,app端调用 login 接口必须传 appid 和 appSecret 缺一不可

  • steven888 (作者)

    ios 我根据authorize 方法已经动态传了appid,它会报appid不能为空

    2021-04-25 13:20

  • steven888 (作者)

    manifest.json 我配置的appid是随意填写的

    2021-04-25 13:22

  • 小小菜76055421

    ios中使用微信登录,authorize总是走错误回调,但安卓,和我测试的ios设备都没问题,只是apple审核测试时,测出这个问题了,而且我也并没有加appid这些参数,像这个问题怎么解决啊

    2021-06-16 01:26

DCloud_iOS_XHY

DCloud_iOS_XHY

1.检查一下 universalLink 是否配置正确,然后需要制作自定义基座测试,参考文档
2.调用authorize 方法时也需要传一下 universalLink,可以使用下面的代码测试一下

plus.oauth.getServices(services => {  

                    var weixin = null;  
                    for (var i in services) {  
                        var service = services[i];  
                        if (service.id == "weixin") {  
                            weixin = service;  
                            break;  
                        }  
                    }  

                    if (weixin) {  
                        weixin.authorize(function(e) {  
                            plus.nativeUI.alert("授权成功:" + JSON.stringify(e));  
                        }, function(e) {  
                            plus.nativeUI.alert("授权失败:" + JSON.stringify(e));  
                        }, {  
                            scope: 'snsapi_userinfo',  
                            state: 'authorize test',  
                            appid: '替换真实的appid',  
                            universalLink: '替换真实的通用链接'  
                        });  
                    }  

                })

下个版本会优化一下这个方法, manifest 中配置了 universalLink 调用 authorize 方法时可以不传universalLink

  • steven888 (作者)

    这个地方可以填写universalLink 但是官方文档上没写~~~更新一下文档哦。。这个地方我都已经用原生插件的形式弄好了。这亏大发了。

    2021-04-28 10:08

  • DCloud_iOS_XHY

    回复 steven888: 已经修改好了,不需要在api传universalLink了

    2021-04-28 19:04

  • 小小菜76055421

    回复 DCloud_iOS_XHY: 我没有传appid这些数据,也是能正常登陆的,但ios审核,就测出bug,authorize这个方法走的是错误回调,这个是啥原因,我在好几台设备上没有测出这个bug

    2021-06-22 17:08

steven888

steven888 (作者) - 80IT


请更新一下这个文档。。。要不然下次有这个需求的ios用户。。又得去用原生插件的形式~麻烦了不少~

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