Кодирование токена APNs в JSON для node-apn (parse-server) - PullRequest
0 голосов
/ 23 января 2019

Я развернул приложение разбора сервера в Heroku, которое я разрабатывал локально, используя Docker.Это приложение использует push-уведомления, поэтому ему необходим доступ к некоторым криптографическим данным для игры с APN.

Локально я смонтировал том с файлом ключа токена в нем.На Heroku это не вариант, и я не хочу связывать ключ в пакете в незашифрованном виде.Я пытался закодировать ключ токена в аргументе JSON в переменную окружения «PARSE_SERVER_PUSH» по-разному.Кажется, что нужен буфер, но я не знаю, как представить такое в JSON, и я ничего не нашел в процессе поиска.

В настоящее время я использую это в моей конфигурации push:

{"ios": 
    {
        "token": {
        "key": {"type":"Buffer","data":[45, 45, ... 45]},
        "keyId": "MYKEYID",
        "teamId": "MYTEAMID" 
        },
        "topic": "com.myApp", 
        "production": false
    }
}

Но сервер заглушает поле 'key':

2019-01-23T19:47:36.725181+00:00 app[web.1]: VError: Failed loading token key: path must be a string or Buffer
2019-01-23T19:47:36.725191+00:00 app[web.1]:     at prepareToken (/parse-server/node_modules/apn/lib/credentials/token/prepare.js:15:13)
2019-01-23T19:47:36.725193+00:00 app[web.1]:     at config (/parse-server/node_modules/apn/lib/config.js:43:31)
2019-01-23T19:47:36.725194+00:00 app[web.1]:     at new Client (/parse-server/node_modules/apn/lib/client.js:21:19)
2019-01-23T19:47:36.725195+00:00 app[web.1]:     at new Provider (/parse-server/node_modules/apn/lib/provider.js:12:19)
2019-01-23T19:47:36.725201+00:00 app[web.1]:     at Function._createProvider (/parse-server/node_modules/@parse/push-adapter/lib/APNS.js:251:22)
2019-01-23T19:47:36.725203+00:00 app[web.1]:     at new APNS (/parse-server/node_modules/@parse/push-adapter/lib/APNS.js:81:29)
2019-01-23T19:47:36.725204+00:00 app[web.1]:     at new ParsePushAdapter (/parse-server/node_modules/@parse/push-adapter/lib/ParsePushAdapter.js:65:40)
2019-01-23T19:47:36.725205+00:00 app[web.1]:     at loadAdapter (/parse-server/lib/Adapters/AdapterLoader.js:31:16)
2019-01-23T19:47:36.725206+00:00 app[web.1]:     at loadAdapter (/parse-server/lib/Adapters/AdapterLoader.js:24:12)
2019-01-23T19:47:36.725207+00:00 app[web.1]:     at getPushController (/parse-server/lib/Controllers/index.js:230:54)

Кто-нибудь знает, как этого добиться?

РЕДАКТИРОВАТЬ: документация (https://github.com/node-apn/node-apn/blob/master/doc/provider.markdown) предполагает, что это возможно:

token.key {Buffer | String} Имя файла токена-ключа провайдера (предоставлено Apple) для загрузки с диска или буфера / строки, содержащей данные ключа .

...