API Xero OAuth 2.0 - c# do tnet core - не авторизован при загрузке вложения в накладную - другие запросы в порядке - PullRequest
0 голосов
/ 02 мая 2020

У меня есть базовое веб-приложение do tnet, которое прекрасно использует счет Xero OAUTH2 для добавления счетов-фактур и запроса данных. Но когда я пытаюсь загрузить вложение, я получаю 401 несанкционированный ответ. Вот код с проблемой

if (timeRecordAttachment != null)
{
    try
    {
        string fileName = $"TimeRecord-{exportTotal.ExportCustomer.Code}-H-{exportTotal.ExportHeader.Id}-{exportTotal.ExportHeader.Year:0000}-{exportTotal.ExportHeader.Month:00}.txt";
        await _accountingApi.CreateInvoiceAttachmentByFileNameAsync(xeroToken.AccessToken, _configuration["Xero:TenantId"], (Guid)exportTotal.XeroInvoiceId, fileName, timeRecordAttachment, true).ConfigureAwait(false);
    }
    catch (ApiException ex)
    {
         _logger.LogWarning($"API exception code {ex.ErrorCode} and Message {ex.Message} was thrown when uploading pdf time record - invoice has been created");
    }
    catch
    {
        throw;
    }
}
logger.LogInformation($"Invoice {generatedInvoice.InvoiceID} created with number {generatedInvoice.InvoiceNumber} for total Id {id}");

Ошибка:

API exception code 401 and Message Xero API error calling CreateInvoiceAttachmentByFileName: {"Type":null,"Title":"Unauthorized","Status":401,"Detail":"AuthorizationUnsuccessful","Instance":"4dbcd6ca-d260-417c-a8d3-4cde373bfdd9","Extensions":{}} was thrown when uploading pdf time record - invoice has been created

Требуются ли какие-либо специальные разрешения для загрузки счетов? Я сейчас использую демонстрационную организацию для тестирования, не так ли?

Создание счета-фактуры отлично работает несколькими строками ранее:

Invoice generatedInvoice = new Invoice();
try
{
    var response = await _accountingApi.CreateInvoicesAsyncWithHttpInfo(xeroToken.AccessToken, _configuration["Xero:TenantId"], invoices).ConfigureAwait(false);
    generatedInvoice = response.Data._Invoices.FirstOrDefault();
}

Для тех, кто читает это с похожей проблемой, Я отредактировал области, чтобы включить accounting.attachments

"Xero": {
    "Scopes": "openid profile email accounting.transactions accounting.contacts accounting.settings offline_access accounting.attachments"
  },

1 Ответ

1 голос
/ 02 мая 2020

Наиболее распространенными причинами ответов 401 через OAuth2.0 являются токены с истекшим сроком действия или неправильные области.

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

Я предполагаю, что когда вы авторизовали соединение, вы не сделали запросите объем accounting.attachments, чтобы ваш пользователь не позволял вам управлять своими вложениями от их имени.

Я - разработчик для Xero, работающий над нашими API, и поэтому, если вы не думаете, что это является причиной, вы можете отредактировать свой вопрос, добавив свойство Instance some-guid-here в ваше ответное сообщение и Я могу соотнести с журналами на нашей стороне

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