【问题标题】:Firestore Token retrieval failed: INVALID_SENDERFirestore 令牌检索失败:INVALID_SENDER
【发布时间】:2018-12-01 21:04:31
【问题描述】:

我没有收到来自addOnSuccessListeneraddOnFailureListeneraddOnCompleteListener等接口的任何回调。

依赖关系:

        classpath 'com.google.gms:google-services:3.2.1'

        implementation 'com.google.firebase:firebase-firestore:16.0.0'
       // }
        apply plugin: 'com.google.gms.google-services'

代码:

 firestore = FirebaseFirestore.getInstance(); // required for first time 
    FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
            .setTimestampsInSnapshotsEnabled(true)
            .build();
    firestore.setFirestoreSettings(settings);

    final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Map<String, Object> user = new HashMap<>();
            user.put("Title", "Ada");
            user.put("category", "Lovelace");
            user.put("id", "123");

            firestore = FirebaseFirestore.getInstance();
            firestore.collection("quotes")
                    .add(user)
                    .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
                        @Override
                        public void onSuccess(DocumentReference documentReference) {
                            Log.d("quotes", "DocumentSnapshot added with ID: " + documentReference.getId());
                            Snackbar.make(fab, "DocumentSnapshot added with ID: " + documentReference.getId(), Snackbar.LENGTH_INDEFINITE).show();
                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Log.w("quotes", "Error adding document", e);
                            Snackbar.make(fab, "OnFailureListener: " + e, Snackbar.LENGTH_INDEFINITE).show();
                        }
                    })
                    .addOnCompleteListener(new OnCompleteListener<DocumentReference>() {
                        @Override
                        public void onComplete(@NonNull Task<DocumentReference> task) {
                            Snackbar.make(fab, "OnCompleteListener: " + task.isSuccessful(), Snackbar.LENGTH_INDEFINITE).show();

                        }
                    });

        }
    });

LOGCAT

E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER
E/FirebaseInstanceId: Token retrieval failed: INVALID_SENDER

【问题讨论】:

  • 您是否在应用中使用 Firebase 云消息传递?因为那是我希望带有FirebaseInstanceId 的消息的来源。
  • 更改google-services.json后重建项目

标签: android firebase google-cloud-firestore


【解决方案1】:

如果您最近更改了 google-services.json 文件,那么只需从 android 项目中删除 build 文件夹并重新构建您的项目。

【讨论】:

    【解决方案2】:

    要解决这个问题,请更改这行代码:

    classpath 'com.google.gms:google-services:3.2.1'
    

    classpath 'com.google.gms:google-services:4.0.1'
    

    implementation 'com.google.firebase:firebase-firestore:16.0.0'
    

    implementation 'com.google.firebase:firebase-firestore:17.0.2'
    

    并且不要忘记添加以下现在必须的依赖项:

    implementation 'com.google.firebase:firebase-core:16.0.1'
    

    另外,如果您需要使用Firebase Messaging,那么您还应该添加以下依赖项:

    implementation 'com.google.firebase:firebase-messaging:17.0.0'
    

    更多信息here.

    【讨论】:

    • 这不是一个有效的答案:我有最新版本,但仍然收到 INVALID_SENDER 错误。
    • @ildarishalin 当我回答这个问题时,这个答案已经奏效了。它已经过测试。现在您应该将依赖项更新到最新版本。
    • 正如我所说,我使用的是最新版本。对我来说真正的答案是从 OnSuccessListener 切换到 OnCompleteListener
    • 在我的例子中, google-services.json 文件是旧的。我的意思是我为两个单独的 Google 帐户注册了我的项目两次。我认为您的 google-services.json 文件中的一个文件是错误的。尝试重新注册您的项目!希望这会有所帮助。
    【解决方案3】:

    我知道这很愚蠢,但是,

    See if google-services.json is correct.
    

    我正在使用来自另一个项目的 google-services.json。

    【讨论】:

      【解决方案4】:

      我有类似的问题。它与我的代码无关,而是与 API 密钥有关,请检查该方面的所有内容是否正常工作。 (我的问题是关于 google billing 帐户)。

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题。

        原来一个团队成员不小心删除了 Firebase 项目。

        【讨论】:

          【解决方案6】:

          抱歉回复晚了,但您会收到正确的发件人来自 firebase。

          转到firebase->选择您的项目->项目设置->云消息传递->发件人ID

          您将获得您的 sender_id ,将其复制并在您的项目中使用它将解决您的问题。

          【讨论】:

          • 复制发件人 ID 的位置
          • 我应该在哪里复制发件人 ID?
          【解决方案7】:

          您的buildVariant 应该与 Firebase 中的项目相同。检查buildTypes 和productFlavors。

          【讨论】:

            【解决方案8】:

            如果使用 Flutter Fire

            注意 - 仅在整个项目中使用此“Firebase.initializeApp”一次。

            等待默认 Firebase 应用初始化

              if (Firebase.apps.isEmpty) {
                await Firebase.initializeApp(
                  name: 'YourAPP',
                  options: DefaultFirebaseOptions.currentPlatform,
                ).whenComplete(() {
                  print("completedAppInitialize");
                });
              }
            

            【讨论】:

              【解决方案9】:

              删除项目(App_Folder_Name)/app/“build”

              删除整个构建文件夹并重建它会起作用。如果只有你的 jason 文件是正确的

              【讨论】:

                【解决方案10】:

                不要与 Flutter Fire 一起使用

                await Firebase.initializeApp(
                
                    // name: 'DontUseThis',
                
                    // Note --^ Gives error of duplicate app if using only 1 app.
                

                并且还显示了[firebase_messaging]

                未能获取 FIS 身份验证令牌错误
                FIS_AUTH_ERROR。不会重试

                E/FirebaseInstanceId(8503):主题同步或令牌检索因硬故障异常失败:FIS_AUTH_ERROR。不会重试该操作。

                避免使用“名称”参数字段。

                【讨论】:

                  猜你喜欢
                  • 2019-08-20
                  • 2018-10-01
                  • 1970-01-01
                  • 2019-06-26
                  • 2019-02-08
                  • 2019-10-02
                  • 2020-11-26
                  • 2019-12-15
                  • 1970-01-01
                  相关资源
                  最近更新 更多