Intereting Posts
AmazonServiceException: Пользователь не имеет права выполнять: dynamodb: DescribeTable Код состояния: 400; Код ошибки: AccessDeniedException Каковы параметры оптимизации пользовательского интерфейса Android? Возобновить воспроизведение видеоизображения с onResume Как искать похожие строки в SQLite Плененный портал с горячей точкой android hotspot Проблема на некоторых телефонах при кодировании растрового изображения в массив byte Ошибка входа в систему Asmack на Android 5.0 и выше Как изменить высоту и ширину коммутатора на Android Как уменьшить размер изображения камеры при сохранении, используя намерение действия камеры? Android Украинский язык Есть ли способ получить событие пробуждения процессора в Android? Как изменить цвет текста в середине предложения в android Вход для зарегистрированных пользователей с Instagram android SavedInstanceState всегда имеет значение null, но onSaveInstanceState () всегда называется Когда Android делает свой недавний скриншот приложений?

Ошибка авторизации GCM http 401

Когда мой сервер backend отправляет почтовые запросы на серверы GCM, я получаю ошибку авторизации HTTP 401.

Я выполнил описанные здесь шаги:

http://developer.android.com/google/gcm/http.html#auth_error

>> api_key=AIzaSyDEy3... >> curl --header "Authorization: key=$api_key" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send  -d "{\"registration_id\":\"ABC\"}" 

Я получаю следующее:

 <HTML> <HEAD> <TITLE>Unauthorized</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <H1>Unauthorized</H1> <H2>Error 401</H2> </BODY> </HTML> 

В устранении неполадок говорится:

 Authentication Error The sender account that you're trying to use to send a message couldn't be authenticated. Possible causes are: 1. Authorization header missing or with invalid syntax. 2. Invalid project number sent as key. 3. Key valid but with GCM service disabled. 4. Request originated from a server not whitelisted in the Server Key IPs. 

У меня есть вопросы по этому поводу:

  1. Правильно ли указан заголовок в запросе на завиток?
  2. Они означают «api_key» (AIzaSy …) или номер проекта, например 8305134 ….?
  3. Как изменить белый IP-адрес сервера?
  4. Если я выполняю команду curl, мне нужно присваивать белый список IP-адресу моего компьютера?

Они означают «api_key» (AIzaSy …) или номер проекта, например 8305134 ….?

Это означает ключ сервера, который должен быть добавлен в ваш скрипт curl. Номер проекта не должен использоваться для отправки сообщения на стороне сервера.

Чтобы создать новый ключ сервера, выполните действия,

  • Перейдите на страницу https://cloud.google.com/console/project.
  • Нажмите на свой проект
  • Перейдите к API и авторизуйтесь на левой панели
  • Выберите «Учетные данные» в подменю на панели слева
  • В разделе « Открытый доступ к API» нажмите « Создать новый ключ »,
  • Выберите «Сервер»
  • В следующем диалоговом окне Укажите белые IP-адреса, если они есть. Если оставить его пустым, запросы будут с любого IP-адреса
  • Нажмите « Создать» .
  • Вы увидите, что новый ключ сервера создается в разделе « Открытый API-интерфейс »,

Этот ключ используется для отправки сообщения в вашем скрипте на стороне сервера.

Как изменить белый IP-адрес сервера?

Вы можете использовать белый список при создании ключа сервера.

Если я выполняю команду curl, мне нужно присваивать белый список IP-адресу моего компьютера?

Для целей тестирования вам не нужно указывать IP. В коммерческих целях вы можете это сделать.

Предупреждение: IP-адрес 0.0.0.0/0, как указано в руководстве « Начало работы» , позволит использовать все IPv4-адреса, но не IPv6.

ОБНОВИТЬ:

Google изменил консоль, теперь вам нужно:

  • Перейдите на страницу https://console.developers.google.com.
  • Выберите свой проект (выпадающий сверху)
  • Выберите Обзор в меню на левой панели
  • Выберите Google Cloud Messaging под заголовком Mobile APIs
  • Нажмите кнопку « Включить».
  • Затем вам нужно создать учетные данные

DEPRECATED

У меня была такая же проблема … тогда я понял, что мне пришлось добавить Google Cloud Messaging для Android тоже.

  • Перейдите на страницу https://cloud.google.com/console/project.
  • Нажмите на свой проект
  • Перейдите к API и авторизуйтесь на левой панели
  • Выберите API в подменю на левой панели
  • Найдите Google Cloud Messaging для Android (или / или Chrome) и включите его

Надеюсь, это поможет вам!

Наконец нашел мою проблему

Я сделал HTTP-заголовок авторизации следующим образом. Authorization:[Api key]

Решение

Мне не хватало «key =» + [Your Api key] в заголовке Authorization,

Поэтому полный HTTP-заголовок будет

Authorization:key=Apikey

У меня такая же проблема. Я использовал Android-ключ, как указано в инструкциях по адресу http://developer.android.com/google/gcm/gs.html. Но мне действительно нужно было использовать ключ сервера для аутентификации из окна Fiddler и примера PushSharp.

Я решил эту ошибку, используя ключ сервера, а не ключ API. Вы можете получить ключ сервера из Firebase Console, щелкнув шестерню и нажав «Настройки проекта», после чего перейдите на вкладку, в которой сообщается «Облачные сообщения» и получите ключ сервера, и нормальный серверный ключ, и старый ключ сервера будут работать.

Это работает как на Firebase, так и на GCM, поэтому нам не нужно указывать два ключа отдельно.

У меня была такая же проблема. Что я сделал:

  1. Очистить белый белый IP-адрес, который будет автоматически установлен на любой IP-адрес.
  2. Восстановите ключ сервера и используйте новый сгенерированный ключ.
  1. Я не знаю синтаксиса команды curl , но кажется странным, что один заголовок, который вы указываете как --header "key: value" а другой – как --header key:"value" . Возможно, один из них неверен. Кроме того, вы должны изменить registration_id:ABC на "{\"registration_ids\":[\"ABC\"]}" .

  2. Они означают ключ API.

  3. Если вы не указали список белых IP-адресов при создании своего API-ключа, по умолчанию он должен быть белым.

Если вы недавно пытались создать новый проект в GCM и добавить серверный ключ, это все равно не удастся получить авторизацию, потому что Google прекратил авторизацию вновь созданных ключей сервера, чтобы продвигать Firebase Cloud Messaging. В настоящее время единственным вариантом создания нового ключа является перенести существующий проект в Firebase.

Если ошибка 401: GCM должен быть импортирован в FCM для работы. Затем идентификаторы сервера и отправителя можно найти по адресу https://console.firebase.google.com/project/my_projectID/settings/cloudmessaging

Несанкционированная проблема будет происходить во время несоответствия в API-интерфейсе. Очистите ключ сервера и восстановите новый. Используйте ключ API сервера в кодировке на стороне сервера. И правильно использовать идентификатор отправителя в Android-клиенте

Проблема связана с авторизацией, но я столкнулся с этой ошибкой, когда я пытался делать что-то по-старому, я знаю, что это старый вопрос, но позвольте мне поставить 50 центов на него. Сначала в городе появился новый ребенок под названием «Firebase Cloud Messaging FCM». Позвольте мне процитировать Google:

FCM – это новая версия GCM под брендом Firebase. Он наследует основную инфраструктуру GCM, а новые SDK упрощают разработку Cloud Messaging.

Преимущества обновления до SDK FCM включают:

Упрощение клиентских разработок. Вам больше не нужно писать собственную логику регистрации или подписки на повторную подписку. Готовое решение для уведомлений. Вы можете использовать Firebase Notifications – решение без серверных уведомлений с веб-консолью, которое позволяет отправлять уведомления для определенных аудиторий на основе информации Firebase Analytics. Дополнительная информация о конфигурации FCM Для студии android

Я надеюсь, что это поможет кому-то, кто пытается делать что-то по-старому

Вышеприведенные действия выполняются, затем проверяйте работу init
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
Включен или нет, если он не включает в себя функцию

Я была такая же проблема. То, что я делал, вместо ключа API я отправлял сообщение, а вместо сообщения я отправлял ключ API. Просто проверьте, допустите ли вы ту же ошибку.