API узла Xero OAuth2 - где API использует код авторизации, предоставленный для обратного вызова? - PullRequest
0 голосов
/ 28 марта 2020

Я следовал описанному здесь потоку https://developer.xero.com/documentation/oauth2/auth-flow и могу получить токенсет, который работает с запросами API.

Однако, глядя на https://github.com/XeroAPI/xero-node-oauth2-app/blob/master/src/app.ts Я не вижу, как / где код авторизации, предоставленный для обратного вызова, используется для получения токенеза. (сравните с шагами 2 и 3 аутентификационного потока.)

Глядя на https://github.com/XeroAPI/xero-node/blob/master/src/XeroClient.ts Я думаю , что apiCallback() выглядит так, как будто это должно быть место - но нигде не упоминается код авторизации.

Ответы [ 3 ]

0 голосов
/ 28 марта 2020

Вы можете уточнить, что вы подразумеваете под кодом авторизации? Вы правы, что apiCalback fn возвращает набор токенов, который вы должны сохранить в своей базе данных, связанной с каждым пользователем.

const tokenSet: TokenSet = await xero.apiCallback (req.url);

Одним из преимуществ использования SDK является то, что вам не нужно делать этот шаг обмена кода. Клиент openid обрабатывает этот обмен для вас. Если вы хотите применить решение самостоятельно, вам нужно будет выполнить все шаги, описанные в первой ссылке на документацию ^^

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

0 голосов
/ 30 марта 2020

Представленный пример (и клиент Xero) основан на express, являющемся платформой обработчика. В любом другом сценарии требуется много работы, чтобы имитировать это.

Затем, наконец, я также обнаружил, что клиент Xero настаивает на использовании области действия openid, в противном случае клиент просто не делает этого. Работа. Ничто в документации не может указывать на это или объяснять, почему это ограничение встроено.

0 голосов
/ 28 марта 2020

Пакет xero-node использует пакет openid-client, который извлекает код и использует его для получения токена, установленного здесь: https://github.com/panva/node-openid-client/blob/master/lib/client.js#L461 -L481

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...