我在Google Cloud Engine示例上使用Firestore客户端(带Go)已经6年了,Google Cloud Engine默认服务账号,感谢这两个设置:
- 我在GCP控制台的Firebase IAM页面上,给该服务账号指定了Firebase项目的Editor角色
- 我在运行的GCE示例上开启了Cloud Datastore作用域
我现在正在尝试设置Firebase Cloud Messaging客户端(仍在Go上):
ctx := context.Background()
app, err := firebase.NewApp(ctx, nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
client, err := app.Messaging(ctx)
if err != nil {
log.Fatalf("error getting Messaging client: %v\n", err)
}
...
response, err := client.Send(ctx, message)
if err != nil {
log.Fatalln(err)
}
但我得到了这个错误:Request had insufficient authentication scopes.
我在GCE示例上查找云消息作用域(类似于云数据库),但是找不到:
然后,我读到here,作用域现在是遗留的。
那么,现在向Google Cloud Engine示例提供Firebase项目访问(包括Cloud Messaging)的正确方法是什么?
1条答案
按热度按时间0mkxixxg1#
好的,所以在Firebase项目上,GCE服务帐户的Editor角色仍然可以使用“遗留”作用域。
如果您有两个独立的GCP项目,一个用于Firebase,一个用于您的GCE,请确保两个GCP项目都启用了Firebase云消息API:https://console.cloud.google.com/apis/api/fcm.googleapis.com/overview?project=xxxxxxxx(其中xxxxx是GCP项目ID)
您还应该在配置中指定Firebase项目ID,否则会出现“SenderId mismatch”错误,因为默认情况下它使用GCE项目ID。