如何让我的 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 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Analytics 调试视图不显示任何内容
Android&Quickblox (api 3.2):订阅推送通知