Xero Accounting Sdk Core: ошибка аутентификации - PullRequest
0 голосов
/ 09 мая 2020

Я использую внутреннюю процедуру для создания счетов из моей базы данных. При использовании .NET Core. Я установил Xero.Api.SDK.Core v. 1.1.4

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

Я создал учетную запись в качестве разработчика и демонстрационную компанию для тестирования.

enter image description here

Я немного погуглил и нашел на сайте пример, как подключиться к api (я не смог найти никаких подробностей в документации Xero).

X509Certificate2 cert = new X509Certificate2(@"public_privatekey.pfx", "password");

var api = new Xero.Api.Example.Applications.Private.PrivateAuthenticator(cert);

var private_app_api = new XeroCoreApi("https://api.xero.com", 
                                      new PrivateAuthenticator(cert),
                                      new Consumer("ClientId", "ClientSecret"), 
                                      null, null);

Сейчас , Подумал, надо использовать api. Я попытался прочитать список контактов:

var contacts = private_app_api.Contacts;
var list = contacts.FindAsync().Result;

Результатом является следующая ошибка:

System.AggregateException: 'Произошла одна или несколько ошибок. (oauth_problem = consumer_key_unknown & oauth_problem_advice = Consumer% 20key% 20was% 20not% 20recognized) '

Inner Exception UnauthorizedException: oauth_problem = consumer_key_unknown & oauth_problem = consumer_key_unknown & oauth_problem_advice * 1027 Я скачал репозиторий с Github. Я копирую и вставляю ClientId и ClientSecret и запускаю тесты. Ни один тест не пройден!

enter image description here

Моя цель - создать контакт или найти его в списке, создать счет и сохранить счет в PDF формат в моем хранилище.

Как я могу это сделать? Есть ли для этого какой-нибудь пример?

PS: На форуме разработчиков логин не работает, а коллекция Postman устарела и тоже не работает.

Обновление

Я был в отчаянии. Пробовал подключиться к apis другим способом с XOauth. Наихудший. Я создал соединение, как объясняет Xero на Github .

enter image description here

Когда я пытаюсь подключиться к

xoauth connect

в моем браузере открывается новая вкладка и ...

enter image description here

Postman Update

Я выполнил шаги с Почтальон . Открыл коллекцию в почтальоне. В среде я обновил client_id и client_secret с сайта Xero Developer, а затем следующие конфигурации:

re_directURI: https://developer.xero.com

scopes: offline_access profile email учет. транзакции

URL авторизации: https://login.xero.com/identity/connect/authorize

Токен доступа: https://identity.xero.com/connect/token

Я открыл Начать работу api, Сгенерировать токен , и я дал тот же результат.

enter image description here

1 Ответ

0 голосов
/ 19 мая 2020

Честно говоря, это был настоящий беспредел. Я потратил больше 2-х недель, чтобы понять, как позвонить в Xero. Я создал сообщение , чтобы шаг за шагом объяснить, что мне нужно делать.

Было много проблем:

  • поймите документацию Xero, потому что это не очень понятно
  • найти правильные значения для ввода в запрос
  • перевести запрос Postman в код
  • нет документации Xero для этого, только бесполезная куча проектов

Довольно долго объяснять все, но, например, если вы хотите прочитать организацию, код с RestSharp будет:

/// <summary>
/// Gets the organizations.
/// </summary>
/// <returns>OrganizationResponse.</returns>
public OrganizationResponse GetOrganizations()
{
    var _client = new RestClient("https://api.xero.com/connections");
    _client.Timeout = -1;

    var request = new RestRequest(Method.GET);
    request.AddHeader("Authorization", "Bearer " + _settings.AccessToken);
    var response = _client.Execute<IList<Organization>>(request);

    return response;
}

Я создам другие сообщения, чтобы объяснить, как чтобы реализовать больше функций.

Я создал для этого NuGet пакет. Исходный код на Github .

...