• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 从 firebase 可调用函数接收返回的数据

[复制链接]
菜鸟教程小白 发表于 2022-12-12 14:39:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 iOS 中的 Callable HTTPS 函数。我已经创建并部署了以下函数:

export const generateLoginToken = functions.https.onCall((data, context) => {

    const uid = data.user_id
    if (!(typeof uid === 'string') || uid.length === 0) {
        throw new functions.https.HttpsError('invalid-argument', 'The function must be called with one argument "user_id" ');
    }

    admin.auth().createCustomToken(uid)
    .then((token) => {
        console.log("Did create custom token:", token)
        return { text: "some_data" };
    }).catch((error) => {
        console.log("Error creating custom token:", error)
        throw new functions.https.HttpsError('internal', 'createCustomToken(uid) has failed for some reason')
    })
})

然后我从我的 iOS 应用程序中调用该函数,如下所示:

let callParameters = ["user_id": userId]
    self?.functions.httpsCallable("generateLoginToken").call(callParameters) { [weak self] (result, error) in
    if let localError = self?.makeCallableFunctionError(error) {
        single(SingleEvent.error(localError))
    } else {
        print("Result", result)
        print("data", result?.data)
        if let text = (result?.data as? [String: Any])?["text"] as? String {
            single(SingleEvent.success(text))
        } else {
            let error = NSError.init(domain: "CallableFunctionError", code: 3, userInfo: ["info": "didn't find custom access token in the returned result"])
            single(SingleEvent.error(error))
        }
    }
}

我可以在日志中看到在服务器上使用正确的参数调用了该函数,但我似乎无法获取从该函数返回到应用程序的数据。似乎 result.data 值是 nil 出于某种原因,即使我 return {text: "some_data"} 从云函数. 怎么会?



Best Answer-推荐答案


哎呀!问题是我忘记从云函数返回实际的 promise 。此功能有效:

export const generateLoginToken = functions.https.onCall((data, context) => {

    const uid = data.user_id
    if (!(typeof uid === 'string') || uid.length === 0) {
        throw new functions.https.HttpsError('invalid-argument', 'The function must be called with one argument "user_id" ');
    }

    return admin.auth().createCustomToken(uid)
    .then((token) => {
        console.log("Did create custom token:", token)
        return { text: "some_data" };
    }).catch((error) => {
        console.log("Error creating custom token:", error)
        throw new functions.https.HttpsError('internal', 'createCustomToken(uid) has failed for some reason')
    })
})

关于ios - 从 firebase 可调用函数接收返回的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50003622/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap