如何在另一个Firebase项目中使用现有的GCM令牌?

9
假设我有一个启用GCM的Google Cloud Project(GCP1),客户端ID为P1。
现在,我创建了一个独立的Firebase项目F2,没有将其导入到GCP1中。我还将F2发布到生产环境。(或者,我从现有的firebase.com项目中导入F2到新的Firebase控制台)。
我使用后端服务器发送推送通知。当我向通过GCP1生成的GCM令牌发送推送通知时,它会失败(自然地),因为客户端ID不正确。是否有解决方法可以在F2中使用为P1生成的GCM令牌?
1个回答

14

当您从后端服务器发送消息时,您需要使用与生成GCM/FCM令牌所使用的项目(sender-id)相关联的API-KEY对请求进行身份验证。
由于安全限制,这里没有任何解决方法。

对于现有的GCM用户,最好的迁移方法是将旧项目导入Firebase控制台。这将使您能够同时针对旧客户端和新客户端,因为sender-id不会改变
步骤在此处:https://developers.google.com/cloud-messaging/android/android-migrate-fcm

如果这不是一个选择(您已经创建了一个与以前的Google Cloud项目不同的新Firebase项目),您有两个选择:

  1. 更简单且推荐的方法:更改您的后端以存储哪个客户端发起了gcm/fcm令牌。然后在从您的后端发送消息时使用正确的API-KEY。(对于旧客户端使用旧项目关联的API-KEY,对于使用新Firebase项目的新客户端使用新API-KEY)。

  2. 如果您无法完全更改您的后端:在FCM中,您可以使用API为旧SenderID创建额外的令牌:
    FirebaseInstanceId.getInstance().getToken("old-sender-id", "FCM")
    因为此令牌与旧sender-id相关联,您的后端将能够使用旧项目的API-KEY向其发送消息。
    注意:这不会影响基于新sender-id的Firebase控制台。
    该控制台将只能针对包含firebase sdk和关联的google_services.json文件的新客户端。


1
谢谢提供信息。我正在尝试解决类似的情况。我已经有一个APP,在一个GCM项目下注册了很多用户。几个月前我们还推出了一个使用Firebase项目的新版本。Firebase项目和GCM不同。现在我想将GCM升级到FCM,但我发现自己陷入了困境,因为我无法将这两个项目链接在一起。我仍然需要能够向旧用户和新用户发送消息,我并不介意不使用Firebase控制台,我只是想能够针对所有人进行目标定位。有什么想法吗?第二个选项是解决方案吗? - Roberto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接