Сервер APNS отвечает статусом 8-invalid-token, но устройства регистрируются правильно

Я реализую функциональность Passbook для моего приложения для iOS. Я использую php в качестве языка на стороне сервера для генерации передачи и распространения на устройства. На устройстве успешно установлены проходы, и я также могу обновить проход вручную, используя pull для повторного обновления.
Когда я пытаюсь автоматически обновить проход со стороны сервера, я получаю ответ 8-invalid-token с сообщением «Идентификатор — это идентификатор строки (index) в базе данных, которая вызвала проблему. Apple отключит вас …..».
Я не понимаю, почему это происходит. Устройства регистрируются правильно, и другие конечные точки также работают нормально. Если проход был неправильным, он не должен быть установлен на устройстве. Я подписал проход, используя тот же сертификат типа удостоверения личности, который я использую для отправки push-уведомлений. Я также проверил свои сертификаты с помощью этой команды в списке Вот.

    $ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert YourSSLCertAndPrivateKey.pem -debug -showcerts -CAfile server-ca-cert.pem

Я проверяю это как для песочницы, так и для производства, и это не показывает никакой ошибки.
Я использую производственный URL для отправки push-уведомления, чтобы обновить пароль; Вот мой код для отправки push;

        $apnsHost = 'gateway.push.apple.com';
$apnsPort = 2195;
$apnsCert = base_path().'/path/to/ptypeidcert.pem';//converted using ssl from passtypeid.p12 certificated
$push_token = $token;
$passIdentify = 'pass.myidentifier.coupon';
$payload = '{}';
$msg = chr(0) . pack('n', 32) . pack('H*', $push_token) . pack('n', strlen($payload)) . $payload . pack('n', strlen($passIdentify)) . $passIdentify;

$streamContext = stream_context_create();

stream_context_set_option($streamContext, 'ssl', 'cafile', base_path().'/path/to/entrust_2048_ca.cer');
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
stream_context_set_option($streamContext, 'ssl', 'passphrase', 'export_password');

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);

fwrite($apns, $msg);
PushNotifications::checkAppleErrorResponse($apns);// Just created a class to read response from apn server
@socket_close($apns);
fclose($apns);

Любая помощь для дальнейшей отладки будет очень ценной. Что-то для отладки моих сертификатов?
Примечание. Конечные точки моего API подаются в протоколе http только для целей тестирования, и они обновляются до протокола https. Я включил HTTP-сервисы на устройстве, чтобы установить пароль на паспорт.

============ ОБНОВЛЕНИЕ =============
Вот шаги для генерации моих сертификатов.

  1. Сначала я загрузил свой сертификат Pass Type Id (.cer), используя CSR-запрос с моим ключом.
  2. Затем экспортировал этот сертифицированный доступ с помощью цепочки для ключей на Mac, в .p12 продление требуется для подписания купона на время создания. Этот купон успешно устанавливается на устройстве.
  3. Затем я преобразовал это .p12 в .pem используется в коде выше для подключения push-сервера. Используя команду;

    openssl pkcs12 -в пути.p12 -на новом файле.pem

Если что-то не так с моим сертификатом, пожалуйста, укажите.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector