Как устранить ошибку Android GCM 401?

При попытке подключения к Google Cloud Message Server я получаю много 401 Неавторизованных ошибок.

Наш код работал некоторое время на нашем тестовом сервере, но на производстве он несколько раз прерывался.

Ключ API работал нормально, push-уведомления поступают (в конечном итоге), но между тем я получаю много ошибок 401.

Я проверил на консоли, что IP-адрес сервера находится в белом списке:

При следующем руководстве Google Troublesooting, я получаю неожиданные результаты:

[email protected]:~$ :curl --header "Authorization: key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFFU" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send  -d "{\"registration_ids\":[\"ABC\"]}"
<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
[email protected]:~$ curl --header "Authorization: key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFFU" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send  -d "{\"registration_ids\":[\"ABC\"]}"
{"multicast_id":7560936933053964665,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
[email protected]:~$ curl --header "Authorization: key=AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFFU" --header Content-Type:"application/json" https://android.googleapis.com/gcm/send  -d "{\"registration_ids\":[\"ABC\"]}"
<HTML>
<HEAD>
<TITLE>Unauthorized</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Unauthorized</H1>
<H2>Error 401</H2>
</BODY>
</HTML>

Иногда используется одна и та же команда curl, и иногда она не имеет никаких изменений, ни в консоли, ни в командной строке... Как иногда это работает, я использую ключ (я дважды проверял ключ и разрешенные IP-адреса несколько раз).

Я проверил все вопросы, связанные с stackoverflow, и протестировал все предложения, но даже удалив все IP-адреса из белого списка (чтобы разрешить запросы с любого IP-адреса), поведение все равно одно и то же, несколько раз оно работает несколько раз, т

Некоторые ссылки, которые я проверил:

Любые советы о том, что может происходить, будут очень оценены.

Ответы

Ответ 1

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

Ответ 2

Я решил свою проблему, создав новый API-ключ в том же проекте. После этого

Перейдите в консоль разработчика Google, затем выберите проект Учетные данные → Создать учетные данные → Ключ API → Ключ сервера, затем добавьте IP-адрес сервера, где размещен код сервера GCM.

После создания ключа Api для выполнения может потребоваться 5 минут

Ответ 3

Может случиться так, что IPv6 используется для соединения, пока разрешен только IPv4. Убедитесь, что у вас есть "Any IP allowed", а не только IPv4 0.0.0.0/0.