Приложение Xero подключено к нескольким организациям - PullRequest
0 голосов
/ 24 апреля 2020

Я подключаюсь к Xero из своего приложения для разработчиков, похоже, что Xero изменил некоторую реализацию в OAuth2.0 и хранит информацию о приложениях, уже подключенных, в отличие от OAuth1.0, где им разрешено подключаться к любой организации.

Можно ли при подключении к Xero выбрать только одну организацию.

введите описание изображения здесь

1 Ответ

0 голосов
/ 24 апреля 2020

Таким образом, Xero access_tokens для OAuth2.0 привязаны к одному пользователю, который потенциально может авторизовать несколько организаций (так называемых арендаторов). Вы правы, что OAuth1.0a был прямым соединением 1-1 org к api.

Если пользователь авторизует более одного арендатора, мы увидели несколько решений для решения этой проблемы UX. может быть:

  • Раскрывающийся список в вашем приложении - пользователь выбирает, какую организацию он хочет синхронизировать c из своих авторизованных соединений. Затем вы передаете этот tenantId в ваши вызовы API.

  • В своем коде вы фильтруете / соединения по updatedDateUt c - и самым последним из них является tenantId, который вы передаете своим вызовам API.

  • используйте / разъедините конечную точку и выделите в своем интерфейсе только одна организация может быть подключена одновременно.

Ссылка на документы: https://developer.xero.com/documentation/oauth2/auth-flow

5. Check the full set of tenants you've been authorized to access
You can verify all the tenants that the user has authorized your app to access by calling the connections endpoint. If the user has authorized your app previously, they may have existing tenant connections. All of the connected tenants can now be accessed with your most recent access token.

Each connection will have a created date and an updated date. If they differ, that means the user is reconnecting this tenant to your app (having previosuly connected and disconnected it).

GET https://api.xero.com/connections
Authorization: "Bearer " + access_token
Content-Type: application/json

Response:
[
    {
        "id": "c869f3b7-6435-4c7e-8cb2-122721b04a69",
        "tenantId": "45e4708e-d862-4111-ab3a-dd8cd03913e1",
        "tenantType": "ORGANISATION",
        "tenantName": "Demo Company (US)",
        "createdDateUtc": "2020-02-02T19:17:58.1117990",
        "updatedDateUtc": "2020-02-02T19:17:58.1117990"
    },
    {
        "id": "74305bf3-12e0-45e2-8dc8-e3ec73e3b1f9",
        "tenantId": "c3d5e782-2153-4cda-bdb4-cec791ceb90d",
        "tenantType": "ORGANISATION",
        "tenantName": "MY other Sweeet Xero Org",
        "createdDateUtc": "2020-01-30T01:33:36.2717380",
        "updatedDateUtc": "2020-02-02T19:21:08.5739590"
    }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...