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

IOS, отправляющий push с APNs Auth Key: вдруг "403 Запрещено: {" reason ":" InvalidProviderToken "}

Я отправляю свои push-уведомления с помощью APNs Auth Key ( "никогда не истекает" ), который работал хорошо, пока я не получил

403 Forbidden: {"reason":"InvalidProviderToken"}

в качестве ответа при отправке push-уведомлений. Что могло быть причиной этого, когда он работал один раз, и вдруг это не без истечения срока? Тем временем он снова работал для некоторых нажатий, но теперь я снова получаю ошибку... Кто-нибудь еще испытал это?

ИЗМЕНИТЬ

Не уверен, но похоже, что это происходит только на сервере Ubuntu, а не на моей локальной (OS X) машине...

4b9b3361

Ответ 1

Я видел это в нескольких обстоятельствах:

  • Повторная подача токенов с истекшим поставщиком, похоже, занесена в черный список и приводит к последующим отклонениям InvalidProviderToken, а не отклонениям ExpiredProviderToken. Проверьте, что вы делаете журналы для сообщений об истечении срока годности. Проверьте свои системные часы, чтобы убедиться, что вы не генерируете токены с перекошенными отметками времени.

  • Отправка недопустимых тем приведет к недействительности всех токенов поставщика в соединении (даже ранее действительных). Только отправьте темы, к которым привязан ключ, и используйте только один ключ для каждого соединения.

Ответ 2

Сервер отвечает с ошибкой InvalidToken и/или ExpiredToken. Ваш токен аутентификации не должен содержать никаких "=", "+", "-", "Двойная проверка", если ваш токен не имеет этого. Также подпись (третья часть токена должна быть закодирована Base64URL, поэтому без предыдущих символов).

Ответ 3

мы имеем точно такую ​​же проблему при отправке нажатий на разные идентификаторы команд с помощью того же соединения. Шаги для воспроизведения:

  • Откройте соединение с APNS и используйте те же соединения, чтобы:

  • Отправьте токен на основе push в тему com.companyA.xxx идентификатора команды 1234: APNS принимает и доставляет нажатие успешно.

  • Отправьте токены на основе темы io.companyB.xxx идентификатора команды 5678: APNS отвечает HTTP 400 BadRequest The device token does not match the specified topic
  • Повторно отправить токен на тему io.companyB.xxx идентификатора команды 5678: APNS отвечает HTTP 403 Forbidden: the provider token is not valid or the token signature could not be verified.

После этого становится невозможным отправить любое нажатие, и соединение должно быть закрыто и снова открыто.

Обходной путь, который мы завершили, - это открыть одно соединение для каждой команды id. Документация APNS не упоминает ничего подобного, поэтому я рассматриваю это как ошибку, и я открыл отчет об ошибке.

Ответ 4

для меня серверное время было недействительным, исправление серверного времени решило проблему

Ответ 5

Для меня была проблема с плохой конфигурацией. Я использовал неправильный идентификатор команды. Пожалуйста, убедитесь, что все настройки верны, прежде чем искать какие-либо другие решения.

Ответ 7

Apple APN documentation говорит:

APN поддерживает только токены аутентификации поставщика, которые подписаны с алгоритм ES256. Необеспеченные JWTs [JSON Web Tokens] или JWT подписали с другими алгоритмами, отклоняются, и ваш сервер поставщика получает ответ InvalidProviderToken (403).

Итак, похоже, что проблема не в вашей авторизации; это на самом деле проблема с веб-маркером, который был создан из вашего ключа.