Использование токенов области действия appUser в Smooch

Я разрабатываю виджет, который пользователи моей компании могут использовать для общения с конечными пользователями через Smooch.

Виджет доступен через веб-браузер, а общение происходит в основном через слой, разработанный в node. Однако я пытался отправлять вложения напрямую в Smooch, чтобы снизить нагрузку на сервер.

Насколько я понимаю, необходимо использовать токен с областью действия appUser, чтобы избежать проблем с CORS.

Я создаю токен, используя следующий код

app.get('/getjwt', (req, res) => {
      var token = jwt.sign({ scope: 'appUser', userId: req.body.userId }, SECRET, { header: { 'alg': 'HS256', 'type': 'JWT', 'kid': '[app key ID]' } });
      res.send({ jwt: token });
});

Я пытаюсь использовать сгенерированный токен (используя Postman для тестов), выполнив запрос с помощью Authorization Bearer [мой сгенерированный токен], и получаю следующую ошибку:

{
    "error": {
        "code": "invalid_auth",
        "description": "Invalid JWT header. Missing key id (kid)"
    }
}

Я попытался изменить значение «ребенок» на идентификатор приложения, идентификатор ключа API и секрет ключа API, и я всегда получаю одну и ту же ошибку. Что мне не хватает? Должен ли я передавать идентификатор ключа куда-то еще?

Спасибо,


person ignatius3    schedule 02.12.2019    source источник


Ответы (1)


Ваш код у меня работает нормально, какую версию jsonwebtoken вы используете? В v6.0.0 параметр headers был переименован в header, поэтому, если вы используете 5.x или ниже, ваш код должен выглядеть так.

var token = jwt.sign({ scope: 'appUser', userId: req.body.userId }, SECRET, { headers: { 'alg': 'HS256', 'type': 'JWT', 'kid': '[app key ID]' } });

Тем не менее, Smooch уже предоставляет полнофункциональный веб-мессенджер / виджет, который вы должны использовать вместо того, чтобы пытаться создать свой собственный. Он предоставляет перехватчики событий и методы для создания полностью настраиваемого пользовательского интерфейса, если это то, чего вы пытаетесь достичь. См. https://docs.smooch.io/guide/web-messenger/. и https://www.npmjs.com/package/smooch

person michaels    schedule 03.12.2019