У меня есть базовое веб-приложение 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"
},