WalteE
WalteE
  • 发布:2022-11-08 19:44
  • 更新:2023-02-07 15:07
  • 阅读:281

ios APP调用一键登录调用云函数报错

分类:uniCloud

求教,有大佬知道这个是啥原因么,在使用一键登录的时候已经添加了应用,并且审核通过。调用uniCloud.callFunction后报错,request:ok
at Function.complete。并且云函数没有日志产生。

云函数代码
index.js

'use strict';  
exports.main = async (event, context) => {  
    // event里包含着客户端提交的参数  
    try {  
        const res = await uniCloud.getPhoneNumber({  
            appid: '__UNI__5058F31', // 替换成自己开通一键登录的应用的DCloud appid  
            provider: 'univerify',  
            apiKey: '', // 在开发者中心开通服务并获取apiKey  
            apiSecret: '', // 在开发者中心开通服务并获取apiSecret  
            access_token: event.access_token,  
            openid: event.openid  
        })  
        return {  
            code: 0,  
            message: '获取手机号成功',  
            data: res  
        }  
    } catch(err){  
        return {  
            code: -1,  
            message: 'uniCloud.getPhoneNumber错误',  
            err  
        }  
    }  

}  

package.json

{  
  "name": "getPhoneNumber",  
  "dependencies": {},  
  "extensions": {  
    "uni-cloud-verify": {}  
  }  
}

客户端调用代码

uni.login({  
                    provider: 'univerify',  
                    univerifyStyle: {  
                        fullScreen: false  
                    },  
                    success(res) { // 登录成功  
                        console.log(res.authResult); // {openid:'登录授权唯一标识',access_token:'接口返回的 token'}  
                        uniCloud.callFunction({  
                            name: 'getPhoneNumber', // 你的云函数名称  
                            data: {  
                                access_token: res.authResult.access_token, // 客户端一键登录接口返回的access_token  
                                openid: res.authResult.openid // 客户端一键登录接口返回的openid  
                            }  
                        }).then(res => {  
                            console.log(res, 'phone')  
                            uni.closeAuthView()  
                            // 登录成功,可以关闭一键登录授权界面了  
                        }).catch(err => {  
                            uni.closeAuthView()  
                            console.log(err, 'error')  
                            // 处理错误  
                        })  

                    },  
                    fail(res) { // 登录失败  
                        uni.closeAuthView()  
                        console.log(res.errCode, 'errCode')  
                        console.log(res.errMsg, 'errMsg')  
                    }  
                })

报错信息:
报错信息是从uniCloud.callFunction的catch里捕获。

B: [getPhoneNumber]: request:ok  
    at Function.complete (http://172.20.10.8:8091/source/file:///var/mobile/Containers/Data/Application/B846AD79-B989-4A33-BE12-039B918D24AD/Documents/Pandora/apps/__UNI__5058F31/www/pages/login/index.js:1079:21)  
    at   
    at Object.So._e [as callback] ()  
    at $o ()  
    at Ji ()  
    at resolve ()  
    at ln ()  
    at of.consume ()  
    at Lc.callback ()  
    at eN ()
2022-11-08 19:44 负责人:无 分享
已邀请:
DCloud_云服务_moyang

DCloud_云服务_moyang

不要携带apiKey等敏感信息,我编辑去掉了。这个应用在今天18点刚审核通过,提供一个token我查一下是否有服务器请求日志

  • WalteE (作者)

    好的,谢谢。请问是这个token么。

    access_token: "bm0yNTM4MDdhNzM5MWY0NmE5YWM4YzRiNDhjZWI2ODQxMnw4Njc0fDN8djJ8Mw=="

    openid: "024981D4012-3B8B-447D-A06F-6D43453C47CE46fc4eeaedfc49ba8ea5bdd669279a3333"

    2022-11-08 21:29

  • WalteE (作者)

    调用uni.login返回的。

    2022-11-08 21:29

  • DCloud_云服务_moyang

    回复 WalteE: 没有查到这个token的请求记录,说明还没有到服务器

    2022-11-09 09:59

  • WalteE (作者)

    回复 DCloud_云服务_moyang: 感谢排查。请问这种问题我应该怎么排查解决。代码都是根据文档编写的,主要是报错信息是uniapp内部抛出。

    2022-11-09 10:14

WalteE

WalteE (作者)

请问要大佬知道么。求救..我的代码和操作完全是按照文档来的。没别的操作了呀。为啥调用云函数会到catch哪一步。而且报错信息是request:ok完全看不明白...

  • DCloud_uniCloud_WYQ

    按照那个错误提示,手机和电脑在一个局域网吗?如果不在的话HBuilderX里面切换成连云端云函数,并把你要调用的云函数上传到云端再试试

    2022-11-09 13:04

  • WalteE (作者)

    回复 DCloud_uniCloud_WYQ: 手机和电脑不是在一个局域网下,HBuilderX是连的云端云函数,这个云函数以及上传部署了。我手动上传并运行云函数可以成功的。但是app端调用uniCloud.callFunction的时候无法成功,云函数也没日志。产生。

    2022-11-09 14:21

  • WalteE (作者)

    回复 DCloud_uniCloud_WYQ: 通过云打包正式后在手机安装。也是弹出这个错误。

    2022-11-09 14:44

WalteE

WalteE (作者)

我通过云打包正式后在手机安装。也是弹出这个错误。

  • DCloud_uniCloud_WYQ

    这台手机访问其他网页什么的正常吗?有没有开启vpn或者代理?

    2022-11-09 16:24

  • WalteE (作者)

    回复 DCloud_uniCloud_WYQ: 别的网页都是正常的。没开vpn和代理

    2022-11-09 16:32

  • DCloud_uniCloud_WYQ

    回复 WalteE: 那再试一下,这个应用里面直接用uni.request发送请求看正常不正常。比如请求一下https://httpbin.org/get

    2022-11-09 17:31

  • WalteE (作者)

    回复 DCloud_uniCloud_WYQ: uni.request是可以调用成功的。

    2022-11-09 17:41

  • WalteE (作者)

    回复 DCloud_uniCloud_WYQ: 还是这个错误。

    2022-11-09 17:41

  • WalteE (作者)

    回复 DCloud_uniCloud_WYQ: 你好。我想把项目的一些代码给你看可能对排查这个问题有帮助。这是我copy的一份代码。上传到了gitee。

    地址:

    https://gitee.com/xudaobin/citizen

    2022-11-09 18:36

  • DCloud_uniCloud_WYQ

    回复 WalteE: 没看明白,uni.request到底是报错还是不报错。

    2022-11-09 19:38

  • WalteE (作者)

    回复 DCloud_uniCloud_WYQ: uni.request可以调用成功。

    2022-11-09 20:47

  • WalteE (作者)

    回复 DCloud_uniCloud_WYQ: 你好 请问还有在帮忙看这个问题么。

    2022-11-10 11:13

  • DCloud_uniCloud_WYQ

    回复 WalteE: 你用的腾讯还是阿里?如果是阿里用uni.request访问一下 https://api.bspapp.com/ , 如果是腾讯就访问一下 http://tcb-api.tencentcloudapi.com/ 看看返回什么

    2022-11-10 11:41

  • WalteE (作者)

    回复 DCloud_uniCloud_WYQ: 使用的是阿里云。返回了。{data: {}

    success: true}

    2022-11-10 12:22

  • WalteE (作者)

    回复 DCloud_uniCloud_WYQ: 找到原因了。原来是uni.addInterceptor拦截修改了url。我不知道uniCloud.callFunction是使用的uni.request... 感谢 这两天打扰了..

    2022-11-10 12:25

  • DCloud_uniCloud_WYQ

    回复 WalteE: 好的,我们文档加一下注意事项。另外uniCloud.uploadFile之前也会调用request

    2022-11-10 14:20

WalteE

WalteE (作者)

求助!!在问答社区也没见到有人遇到类似的问题。看报错信息也摸不着头绪。

WalteE

WalteE (作者)

找到原因了。uniCloud.callFunction调用的时候会使用uni.request。并且会被我们自己的uni.addInterceptor 拦截。注意别修改了就行。非常感谢Hb的工作人员这两天的支持。

4***@qq.com

4***@qq.com

感谢这个帖子。一言惊醒梦中人。【uni.addInterceptor拦截!!!】

要回复问题请先登录注册