如何让我的 Google-service.json 与 Google Cloud Platform 中的 Firestore 一起使用?

Posted

技术标签:

【中文标题】如何让我的 Google-service.json 与 Google Cloud Platform 中的 Firestore 一起使用?【英文标题】:How do I get my Google-service.json working with Firestore inside Google Cloud Plataform? 【发布时间】:2021-02-23 14:50:37 【问题描述】:

我正在使用谷歌云平台来制作我的系统。它内部有一个 Firestore 系统,它使用与外部(谷歌云平台之外)相同的 API 和包。

我知道使用外部的 Json 可以生成一个 Json,用作在 Flutter/dart 中使用 FireStore 模块的密钥。但是使用内部 Firestore GCP,您只能生成 GCP 密钥,而不是 Firestore 密钥。甚至在密钥生成器中使用“firestore adm”选项。

这里是我用来启动 Firestore 的简单代码

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_core/firebase_core.dart';

FirebaseFirestore firestore = FirebaseFirestore.instance;

bool teste() 
  Firebase.initializeApp();
  //print(firestore.collection("users").snapshots());

  return false;


这是我尝试使用 GCP 密钥时出现的错误:

E/flutter (11150): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: [core/not-initialized] Firebase has not been correctly initialized. Have you added the "google-services.json" file to the project?
E/flutter (11150):
E/flutter (11150):     View the android Installation documentation for more information: https://firebaseextended.github.io/flutterfire/docs/installation/android
E/flutter (11150):
E/flutter (11150): #0      MethodChannelFirebase.initializeApp (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:86:9)
E/flutter (11150): <asynchronous suspension>
E/flutter (11150): #1      Firebase.initializeApp (package:firebase_core/src/firebase.dart:43:25)
E/flutter (11150): #2      teste (package:invideo_finder/backend/verifyFireBase.dart:7:12)
E/flutter (11150): #3      _RegisterPageState.verifyUser.<anonymous closure> (package:invideo_finder/pages/register.dart:51:11)
E/flutter (11150): #4      State.setState (package:flutter/src/widgets/framework.dart:1244:30)
E/flutter (11150): #5      _RegisterPageState.verifyUser (package:invideo_finder/pages/register.dart:34:5)
E/flutter (11150): #6      _RegisterPageState.onPressButton (package:invideo_finder/pages/register.dart:69:27)
E/flutter (11150): #7      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:993:19)
E/flutter (11150): #8      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1111:38)
E/flutter (11150): #9      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24)
E/flutter (11150): #10     TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:598:11)
E/flutter (11150): #11     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:287:5)
E/flutter (11150): #12     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:222:7)
E/flutter (11150): #13     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:476:9)
E/flutter (11150): #14     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:77:12)
E/flutter (11150): #15     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:122:9)
E/flutter (11150): #16     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
E/flutter (11150): #17     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:120:18)
E/flutter (11150): #18     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:106:7)
E/flutter (11150): #19     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:358:19)
E/flutter (11150): #20     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:338:22)
E/flutter (11150): #21     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:267:11)
E/flutter (11150): #22     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:295:7)
E/flutter (11150): #23     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:240:7)
E/flutter (11150): #24     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:213:7)
E/flutter (11150): #25     _rootRunUnary (dart:async/zone.dart:1206:13)
E/flutter (11150): #26     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (11150): #27     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)

有人可以,请帮帮我?我不知道该怎么做。

【问题讨论】:

我不清楚这里有什么问题。 “Firestore GCP 内部”是什么意思?这与在 Flutter 中正常使用 Firestore 有何不同? 【参考方案1】:

google-services.json 包含凭据,以便您的应用访问 GCP 中的服务,因此您可以使用可以为服务帐户生成的 credentials.json。关注next steps:

创建服务帐号

转至Service Account Page 点击创建服务帐户 输入其名称和描述 点击创建 选择您需要的角色,以便从您的应用中访问您要使用的服务 点击继续 点击完成

单击您正在使用的服务帐户

点击添加密钥

选择 JSON

点击创建

这些步骤将允许您创建服务帐户并下载其Credentials.json 文件。

如果您想使用google-services.json,此文件是由 Firebase 生成的,可以在 Firebase 控制台注册应用后从该控制台下载。

考虑一下,当您有一个 GCP 项目时,您可以通过访问 Firebase Console 并访问您的项目来启用 Firebase。并且所有兼容两个平台的资源都会被共享,包括 Firestore

【讨论】:

【参考方案2】:

我不确定您是否知道您实际上可以在 Firebase 控制台中访问您的项目 google-services.json 文件。这是使用 Firebase 服务的正确方法。

您可以在 Firebase 控制台的项目设置中获取该文件。

【讨论】:

我现在正在使用 Firebase,我正在使用 Google 云平台 Firestore。是否存在一些命令来请求这个 Json(在控制台中)?【参考方案3】:

看起来如果您在 Google 云平台中有一个 Firestore,那么您在 FireBase 平台中也有一个,我不知道这个

【讨论】:

以上是关于如何让我的 Google-service.json 与 Google Cloud Platform 中的 Firestore 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

看不到 crashlytics

Firebase Analytics 调试视图不显示任何内容

Android&Quickblox (api 3.2):订阅推送通知

GoogleSignInAccount 返回 null

Flutter 应用程序未使用 cloud_firestore 插件编译

如何让我的图片标题具有响应性?