【问题标题】:Firebase cloud functions / One works, other (same function) not worksFirebase 云功能/一个有效,另一个(相同功能)无效
【发布时间】:2020-07-26 00:28:04
【问题描述】:

我很紧张..我无法正常测试firebase云功能,因为很多东西都不起作用。我测试了它,我用不同的名称复制了相同的函数,新函数不起作用。 为什么???? 为什么工作 helloworld 而为什么不工作 tryhello???

云函数nodejs index.js:

    const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

const db = admin.firestore();


exports.tryHello = functions.https.onCall((data, context) => {

        let dataexample = {
          name: 'examplename',
          state: 'examplestate',
          country: 'examplecountry'
        };
        let setDoc = db.collection('newexample').doc(data.text).set(dataexample);

        return { text : "success. uid:" + context.auth.uid }

});


exports.helloWorld = functions.https.onCall((data, context) => {

        let dataexample = {
          name: 'examplename',
          state: 'examplestate',
          country: 'examplecountry'
        };
        let setDoc = db.collection('newexample').doc(data.text).set(dataexample);

        return { text : "success. uid:" + context.auth.uid }

});

Unity C#:

    public void testbutton()
    {
        var data = new Dictionary<string, object>();
        data["text"] = "example";

 //I tested "tryHello" and helloWorld"

        FirebaseFunctions.DefaultInstance.GetHttpsCallable("tryHello")
.CallAsync(data).ContinueWith((task) =>
{
if (task.IsFaulted)
{
          // Handle the error...
          print("error");

}
else if (task.IsCompleted)
{
        IDictionary snapshot = (IDictionary)task.Result.Data;

        print("Result: " + snapshot["text"]);

    }
}

结果:

1.首先我统一写:GetHttpsCallable("helloWorld") 并保存。

我开始游戏,登录,然后点击测试按钮。

结果: firebase 控制台:成功创建示例集合、示例文档、国家/地区:示例国家、名称:示例名称、状态:示例状态。好的好的。

统一日志:

1.用户登录成功:Jane Q. User (qQC3wEOU95eDFw8UuBjb0O1o20G2) UnityEngine.Debug:LogFormat(String, Object[]) loginfire:b__10_0(Task1) (at Assets/loginfire.cs:155) 2. Result: success. uid:qQC3wEOU95eDFw8UuBjb0O1o20G2 UnityEngine.MonoBehaviour:print(Object) <>c:<testbutton>b__16_0(Task1) (在 Assets/loginfire.cs:411) System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()

云函数“helloWorld”日志: 函数执行开始 函数执行耗时 3020 毫秒,完成状态码:200

好的。我在 Firebase 控制台中删除了“示例”集合。

2。二、我统一写:GetHttpsCallable("tryHello") 并保存。

我开始游戏,登录,然后点击测试按钮。

结果:没有创建集合。

统一日志:

*1。用户登录成功:Jane Q. 用户 (qQC3wEOU95eDFw8UuBjb0O1o20G2) UnityEngine.Debug:LogFormat(String, Object[]) loginfire:b__10_0(Task`1) (在 Assets/loginfire.cs:155) System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()

  1. 错误 UnityEngine.MonoBehaviour:打印(对象) c:b__16_0(Task`1) (在 Assets/loginfire.cs:396) System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()*

云函数“tryHello”日志: 没什么……

为什么? 我不明白。一样,只是名字不同!

而且.. 在许多情况下它显示成功但仍然不更新数据库。或者只是很久以后。为什么?最近“helloWorld”也经常报错,如果我登录后不立即按testbutton,就读不到uid。

我从一开始就开始厌倦这个系统。

谢谢..

【问题讨论】:

    标签: google-cloud-functions


    【解决方案1】:

    解决了!

    我需要将其配置为云控制台“tryHello”权限设置。 (不同的 helloworld 设置。)

    最近“helloWorld”也经常报错,如果我登录后不立即按testbutton,是读不到uid的。

    -> 我需要在 testbutton() 中声明 Firebasauth。

    抱歉这个问题,谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 2020-12-21
      相关资源
      最近更新 更多