Android GCM的API密钥突然无效?未授权(401)错误

Android GCM的API密钥突然无效?未授权(401)错误,android,firebase,google-cloud-messaging,firebase-cloud-messaging,Android,Firebase,Google Cloud Messaging,Firebase Cloud Messaging,我为我的Android应用程序创建了一个用于GCM推送通知的Android API密钥。从过去两天开始,GCM服务器返回未经授权的(401)PHP响应 Android API密钥无效/过期是否有任何原因?还是GCM不推荐使用Android API密钥 我仍然没有得到正确的解释,为什么Android API密钥是无效的?对于GCM,大多数人更喜欢服务器密钥而不是Android API密钥,但没有提到为什么不使用Android API密钥 为什么不在GCM中使用Android API密钥?Andro

我为我的Android应用程序创建了一个用于GCM推送通知的Android API密钥。从过去两天开始,GCM服务器返回未经授权的(401)PHP响应

Android API密钥无效/过期是否有任何原因?还是GCM不推荐使用Android API密钥

我仍然没有得到正确的解释,为什么Android API密钥是无效的?对于GCM,大多数人更喜欢服务器密钥而不是Android API密钥,但没有提到为什么不使用Android API密钥


为什么不在GCM中使用Android API密钥?Android API密钥有任何限制吗?或者GCM服务器是否会阻止通知/GCM服务器在通知消息超过每日限制时使Android API密钥无效?

更新:使用的术语返回到服务器密钥

就在最近,Firebase云消息传递令牌(FCM令牌)正在推出。这在Firebase控制台的云消息选项卡中可见



更新:现在,谚语中有一个明显的注释:

从2016年9月开始,只能使用“设置”面板的选项卡在Firebase控制台中创建新的服务器密钥。需要创建新服务器密钥的现有项目可以在中导入,而不会影响其现有配置


更新:从GCM迁移到FCM似乎也解决了错误问题

如果您刚刚开始使用GCM,请不要在Google开发者控制台中创建项目,而是在Firebase控制台中创建项目。创建项目后,只需使用自动生成的服务器密钥。以下是查找服务器密钥的步骤:

  • 转到您的文件夹并单击“创建新项目”
  • 填写您想要的项目名称并选择您的国家/地区。在此之后,新项目应处于活动状态
  • 然后在左侧面板上,单击齿轮按钮并选择项目设置
  • 然后转到云消息选项卡
  • 对于旧的GCM项目,您只需将项目导入Firebase控制台即可:

  • 转到“导入项目”,然后单击“导入项目”
  • 选择要导入的项目和所在国家/地区
  • 单击AddFirebase。在此之后,新项目应处于活动状态
  • 然后在左侧面板上,单击齿轮按钮并选择项目设置
  • 然后转到云消息选项卡

  • 由于某些原因,现在只有服务器密钥可以与GCM一起使用。Android密钥并不是唯一一个似乎无效的密钥,所有其他客户端API密钥(浏览器、iOS、Android)都无效


    当与的描述相关时:

    如果应用程序在服务器上运行,请创建并使用服务器密钥

    使用服务器密钥是合乎逻辑的,因为您正在服务器上使用API密钥,并且它正在与GCM连接服务器一起工作

    如果将与(在凭据下)进行比较,您可以看到,在GCM中,它仅表示API密钥,而在FCM中,它已经指定了服务器密钥。嗯,FCM是GCM的更新版本,可能与此有关吗?我不太确定,但我想你明白我说的要点了

    更新:在GCM文档中,现在指示服务器密钥


    默认情况下,完成这些步骤后,会生成一个服务器API密钥(我通过选择Android应用程序对其进行了测试)。同样的情况也会发生。每当我创建一个新项目时,它都会自动生成一个服务器密钥

    希望将来会有一个关于原因的解释


    我们将继续添加有关如何创建服务器密钥的步骤。以防其他人感到困惑,或者新手不知道该怎么做

  • 去你的房间
  • 在左侧窗格中,单击凭据
  • 在凭据选项卡下,单击创建凭据
  • 选择API密钥
  • ---开发人员控制台中的更新在这里完成了这一步---

  • 选择服务器密钥
  • 填写细节
  • 点击创建
  • 此时服务器密钥应可用


    更新:似乎最近在生成API密钥时发生了更改。在我上面提到的步骤4之前都是一样的。但是,选择API密钥后,它将直接创建API密钥,而不询问密钥类型(服务器、Android、浏览器、iOS)。它只允许您根据要生成的API密钥设置一些可见的限制



    更新:在创建没有限制的API密钥时,它会显示一个通知(感叹号),说明您的API密钥易受攻击,这就是为什么强烈建议您为API密钥添加限制。有人遇到了这个问题,添加了一个限制就可以解决它。

    您在PHP脚本中更新了必要的凭据吗?您是否在google开发者控制台中包含了软件包名称?@kumar我更新了我的答案。过来看。如果你正在寻找一个官方的原因,似乎还没有透露。嗨@kumar,我今天的应用程序也遇到了类似的问题。两年来,它一直运行良好,但从周五开始,我突然收到了同样的错误。也尝试过重新生成服务器密钥,但没有成功。您解决了吗?您只需删除该服务器密钥并创建新的服务器密钥。现在试试看,服务器密钥不再是一个选项。所以我选择了
    no restrictions
    ,API密钥显示无效。谢谢。我使用MixPanel进行推送通知,新的
    no restrictions
    键在他们的系统中不被接受。似乎其他用户也有这种问题,但谷歌没有