草庐IT

android - GCM的API key 突然无效?未经授权(401)错误

coder 2023-06-06 原文

我为Android应用程序的GCM推送通知创建了Android API key 。从最近两天开始,GCM服务器在PHP中返回未授权(401)响应。

是否有任何原因导致Android API key 无效/过期?还是GCM不赞成使用Android API key ?

关于Android API key 为何无效,我仍然没有得到适当的解释?对于GCM,大多数人更喜欢使用服务器 key 而不是Android API key ,但没有提及为何不使用Android API key 。

为什么不在GCM中使用Android API key ? Android API key 是否有任何限制?还是GCM服务器阻止了通知/如果通知消息超过每日限制,GCM服务器正在使Android API key 无效?

最佳答案

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

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

更新:GCM docs中现在有一个可见的注释:

Starting from Sept. 2016 new server key can only be created in the Firebase Console using the Cloud Messaging tab of the Settings panel. Existing projects that need to create a new server key can be imported in the Firebase console without affecting their existing configuration.



更新:似乎从GCM迁移到FCM 也解决了401未经授权错误的问题。

如果您刚刚开始使用GCM ,而不是在Google Developers Console中创建项目,请在Firebase Console中进行操作。创建项目后,只需使用自动生成的服务器 key 即可。以下是查找服务器 key 的步骤:
  • 转到您的Firebase Console,然后单击CREATE NEW PROJECT。
  • 填写所需的项目名称,然后选择您的国家/地区。此后,新项目应处于 Activity 状态。
  • 然后在左侧面板上,单击齿轮按钮,然后选择项目设置
  • 然后转到云消息传递选项卡

  • 对于旧的GCM项目,您只需将项目导入Firebase控制台即可:
  • 转到您的Firebase Console,然后单击IMPORT PROJECT。
  • 选择要导入的项目和您所在的国家。
  • 单击添加FIREBASE。此后,新项目应处于 Activity 状态。
  • 然后在左侧面板上,单击齿轮按钮,然后选择项目设置
  • 然后转到云消息传递选项卡


  • 由于某些原因,现在只有服务器 key 可用于GCM。 Android key 并不是唯一看起来无效的 key ,所有其他客户端API key (浏览器,iOS,Android)都是无效的。

    当涉及到Server Key的描述时:

    Create and use a Server key if your application runs on a server.



    使用服务器 key 是合乎逻辑的,因为您正在服务器上使用API​​ key ,并且它可以与GCM Connection服务器一起使用。

    如果将FCM docsGCM docs(在凭据下)进行比较,可以看到在GCM中,它仅声明API key ,而在FCM中,它已经指定了服务器 key 。好吧,FCM是GCM的更新版本,可能与它有关吗?我不太确定,但我想您会明白我在说什么。

    更新:在GCM文档中,现在指示服务器 key 。

    默认情况下,经过Configure your API Project步骤后,会生成服务器API key (我通过选择Android应用程序对其进行了测试)。 firebase-cloud-messaging也是如此。每当我创建一个新项目时,它都会自动生成一个服务器 key 。

    希望将来会有原因的解释。

    继续,并添加有关如何创建服务器 key 的步骤。以防万一其他人感到困惑,或者新手不确定如何做。
  • 转到您的Google Developers Console
  • 在左侧 Pane 中,单击“凭据”
  • 在Credentials选项卡下,单击Create Credentials
  • 选择API key

  • ---在开发人员控制台中进行更新可简化此处的步骤---
  • 选择服务器 key
  • 填写详细信息。
  • 单击创建

  • 届时服务器 key 应该可用。

    更新:似乎在生成API key 时发生了最近的更改。直到我上面提到的步骤4为止都是一样的。但是,选择“API key ”后,它将直接创建一个API key ,而无需询问 key 的类型(服务器,Android,浏览器,iOS)。它将仅允许您设置一些限制,这些限制取决于您打算生成的API key 而可见。

    更新:创建无限制的API key 时,它会显示一个通知(感叹号)您的API key 易受攻击,这就是强烈建议鼓励您为您的API key 添加限制的原因。一个post遇到了这个问题,添加一个限制就可以解决它。

    关于android - GCM的API key 突然无效?未经授权(401)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37789264/

    有关android - GCM的API key 突然无效?未经授权(401)错误的更多相关文章

    1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

      大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

    2. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

      我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

    3. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

      我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

    4. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

      我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

    5. ruby-on-rails - 错误 : Error installing pg: ERROR: Failed to build gem native extension - 2

      我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby​​'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe

    6. ruby - #之间? Cooper 的 *Beginning Ruby* 中的错误或异常 - 2

      在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee

    7. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

      我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

    8. ruby-on-rails - Rails 5 Active Record 记录无效错误 - 2

      我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa

    9. arrays - 这是 Ruby 中 Array.fill 方法的错误吗? - 2

      这个问题在这里已经有了答案:Arraysmisbehaving(1个回答)关闭6年前。是否应该这样,即我误解了,还是错误?a=Array.new(3,Array.new(3))a[1].fill('g')=>[["g","g","g"],["g","g","g"],["g","g","g"]]它不应该导致:=>[[nil,nil,nil],["g","g","g"],[nil,nil,nil]]

    10. ruby-on-rails - Ruby on Rails 计数器缓存错误 - 2

      尝试在我的RoR应用程序中实现计数器缓存列时出现错误Unknownkey(s):counter_cache。我在这个问题中实现了模型关联:Modelassociationquestion这是我的迁移:classAddVideoVotesCountToVideos0Video.reset_column_informationVideo.find(:all).eachdo|p|p.update_attributes:videos_votes_count,p.video_votes.lengthendenddefself.downremove_column:videos,:video_vot

    随机推荐