Подтвердить что ты не робот

API-ключ для GCM неожиданно недействителен? Несанкционированная ошибка (401)

Я создал ключ API Android для уведомления GCM Push для моего приложения Android. За последние два дня сервер GCM возвращает ответ Unauthorized (401) в PHP.

Есть ли причина, по которой ключ Android API недействителен/истекает? Или ли API Android API не рекомендуется GCM?

Тем не менее, я не получаю надлежащего объяснения относительно того, почему ключ Android API недействителен? Большинство из них предпочитают ключ Server вместо ключа API Android для GCM, но не упоминает, почему не использовать ключ Android API.

Почему бы не использовать Android API Key в GCM? Существуют ли ограничения для Android API? Или блокирует ли сервер GCM сервер уведомлений /GCM делает ключ Android API недопустимым, если уведомление превышает лимит на день?

4b9b3361

Ответ 1

Обновить. Используемый термин возвращается к Ключ сервера.

Совсем недавно появился токен Firebase Cloud Messaging (FCM Token), который выполняется. Это видно на вкладке "Облачные сообщения" в консоли Firebase.С >


Обновить. Теперь в GCM docs есть заметная заметка:

Начиная с сентября 2016 года новый серверный ключ может быть создан только в Firebase Console с помощью вкладки Cloud Messaging на панели настроек. Существующие проекты, которые необходимо создать новый ключ сервера, можно импортировать в консоль Firebase, не затрагивая их существующую конфигурацию.


Обновить. Также показалось бы, что Миграция с GCM на FCM устраняет проблему для 401 Unauthorized Error.

Если вы только начинаете использовать GCM, вместо создания проекта в Google Developers Console, сделайте это в консоли Firebase. После создания проекта просто используйте автоматически сгенерированный ключ сервера. Ниже приведены шаги, чтобы найти ключ сервера:

  • Перейдите в Firebase Console и нажмите CREATE NEW PROJECT.
  • Заполните свое желаемое название проекта и выберите свою страну. После этого новый проект должен быть активным.
  • Затем на левой панели нажмите кнопку gear и выберите Настройки проекта.
  • Затем перейдите на вкладку Cloud-Messaging.

Для старых проектов GCM вы можете просто импортировать проект в консоль Firebase:

  • Перейдите в Firebase Console и нажмите IMPORT PROJECT.
  • Выберите проект, который вы хотите импортировать, и свою страну.
  • Нажмите ADD FIREBASE. После этого новый проект должен быть активным.
  • Затем на левой панели нажмите кнопку gear и выберите Настройки проекта.
  • Затем перейдите на вкладку Cloud-Messaging.

По какой-то причине теперь только серверный ключ работает с GCM. Android-ключ не единственный, который кажется недействительным, все другие ключи Client API (браузер, iOS, Android).


В отношении описания Server Key:

Создайте и используйте ключ сервера, если ваше приложение работает на сервере.

Логично использовать ключ сервера, так как вы используете ключ API на своем сервере, и он работает с сервером GCM Connection.

Если вы сравниваете документы FCM с GCM docs (под Credentials), вы можете видеть, что в GCM он указывает только ключ API, а в FCM он уже указывает ключ сервера. Ну, FCM - это более новая версия GCM, может быть, она имеет к ней какое-то отношение? Я не уверен, но я думаю, что вы получаете суть того, что я говорю.

Обновить. В документах GCM теперь отображается ключ сервера.


По умолчанию, после прохождения шага Configure your API Project создается ключ API сервера (я тестировал его, выбрав приложение для Android), То же самое происходит с . Всякий раз, когда я создаю новый проект, он автоматически генерирует ключ сервера.

Надеюсь, в будущем будет объяснено, почему.


Идем дальше и добавляем шаги по созданию ключа сервера. На всякий случай другие запутались, или новички не уверены, как это сделать.

--- Обновление в Консоли разработчиков сокращает этот шаг здесь ---

  1. Выберите Server Key
  2. Заполните детали.
  3. Нажмите Create

Ключ сервера должен быть доступен к этому моменту.


Обновление: Кажется, что при генерации ключа API произошла недавняя смена. То же самое происходит до этапа 4, о котором я говорил выше. Однако после того, как вы выберете API-ключ, он будет напрямую создавать ключ API, не спрашивая, какой тип ключа (Server, Android, Browser, iOS) есть. Это позволит вам установить только некоторые Ограничения, которые были видны в зависимости от того, какой ключ API вы собираетесь генерировать.


Обновить. При создании ключа API без ограничений в нем отображается уведомление (восклицательный знак) о том, что ваш ключ API уязвим, поэтому он высоко рекомендуется для добавить ограничение для вашего ключа API. У одной почты возникла эта проблема, и добавление ограничения разрешило ее.

Ответ 2

это может быть странно для вас, но это то, что решил для меня...

в моем бэкэнд,... это вызвало ошибку.

$Key = 'someKey';

этот разрешил ошибку.

$Key = "someKey";