Я пытаюсь реализовать запрос ротации секретов LWA, используя «Руководство по использованию API управления приложениями v2023-11-30».
Вот мой тестовый код C#:
public static async Task RotateLWAAsync(
string ClientId = "{Идентификатор вашего клиента}",
string ClientSecret = "{Секрет вашего клиента}",
stringgrant_type = "client_credentials",
stringscope = "sellingpartnerapi::client_credential:rotation",
stringrefreToken = "{Ваш токен обновления}",
CancellationToken cancelToken = default)
{
try
{
var data = string.Empty;
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("https://api.amazon.com");
var byteArray = Encoding.ASCII.GetBytes($"{ClientId}:{ClientSecret}");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
Элементы словаря = новый Dictionary();
items.Add("grant_type",grant_type );
items.Add("scope",scope); // ScopeConstants.ScopeMigrationAPI);
items.Add("client_id", ClientId);
items.Add("client_secret", ClientSecret);
FormUrlEncodedContent formUrlEncodedContent = new FormUrlEncodedContent (items);
var rs = await client.PostAsync("/auth/o2/token", formUrlEncodedContent, cancelToken);
data = await rs.Content.ReadAsStringAsync();
System.Console.WriteLine($"StatusCode = {rs.StatusCode}, Success = {rs.IsSuccessStatusCode}, Msg = {rs.ReasonPhrase}");
var r = JsonConvert.DeserializeObject(data);
var json = Newtonsoft.Json.JsonConvert.SerializeObject(r, Formatting.Indented);
System.Console.WriteLine(json);
System.Console.WriteLine("---");
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri( "https://sellingpartnerapi-na.amazon.com");
Элементы словаря = новый словарь();
items.Add("x-amz-access-token", r .access_token);
FormUrlEncodedContent formUrlEncodedContent = new FormUrlEncodedContent(items);
var rs = await client.PostAsync("/applications/2023-11-30/clientSecret", formUrlEncodedContent, cancelToken) ;
System.Console.WriteLine($"StatusCode = {rs.StatusCode}, Success = {rs.IsSuccessStatusCode}, Msg = {rs.ReasonPhrase}");
data = await rs.Content.ReadAsStringAsync();
System.Console.WriteLine ($"data = {data}");
}
return true;
catch (Exception ex)
{
System.Console.WriteLine($"Ошибка выполнения: {ex.Message}");
возвращает false;
}
Приведенный выше код приводит к следующему выводу:
StatusCode = OK, Success = True, Msg = OK
{
"access_token": "{Возвращён правильный токен доступа}",
"refresh_token" : null,
"token_type": "bearer",
"expires_in": 3600,
"date_Created": "2024-09-23T14:29:32.6320411Z"
}
---
StatusCode = Forbidden, Success = False, Msg =
data = {
«ошибки»: [
{
«код»: «Несанкционировано»,
«сообщение»: «Доступ к запрошенному ресурсу запрещен».
«подробности»: «В заголовке запроса отсутствует токен доступа».
]
Что я делаю не так со своим вторым клиентом HTTP-вызова.PostAsync(...), который в случае успеха должен вернуть код состояния 204?
Подробнее здесь: https://stackoverflow.com/questions/790 ... est-header
Ротация LWA в коде C#: в заголовке запроса отсутствует токен доступа ⇐ C#
Место общения программистов C#
1727124180
Anonymous
Я пытаюсь реализовать запрос ротации секретов LWA, используя «Руководство по использованию API управления приложениями v2023-11-30».
Вот мой тестовый код C#:
public static async Task RotateLWAAsync(
string ClientId = "{Идентификатор вашего клиента}",
string ClientSecret = "{Секрет вашего клиента}",
stringgrant_type = "client_credentials",
stringscope = "sellingpartnerapi::client_credential:rotation",
stringrefreToken = "{Ваш токен обновления}",
CancellationToken cancelToken = default)
{
try
{
var data = string.Empty;
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("https://api.amazon.com");
var byteArray = Encoding.ASCII.GetBytes($"{ClientId}:{ClientSecret}");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
Элементы словаря = новый Dictionary();
items.Add("grant_type",grant_type );
items.Add("scope",scope); // ScopeConstants.ScopeMigrationAPI);
items.Add("client_id", ClientId);
items.Add("client_secret", ClientSecret);
FormUrlEncodedContent formUrlEncodedContent = new FormUrlEncodedContent (items);
var rs = await client.PostAsync("/auth/o2/token", formUrlEncodedContent, cancelToken);
data = await rs.Content.ReadAsStringAsync();
System.Console.WriteLine($"StatusCode = {rs.StatusCode}, Success = {rs.IsSuccessStatusCode}, Msg = {rs.ReasonPhrase}");
var r = JsonConvert.DeserializeObject(data);
var json = Newtonsoft.Json.JsonConvert.SerializeObject(r, Formatting.Indented);
System.Console.WriteLine(json);
System.Console.WriteLine("---");
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri( "https://sellingpartnerapi-na.amazon.com");
Элементы словаря = новый словарь();
items.Add("x-amz-access-token", r .access_token);
FormUrlEncodedContent formUrlEncodedContent = new FormUrlEncodedContent(items);
var rs = await client.PostAsync("/applications/2023-11-30/clientSecret", formUrlEncodedContent, cancelToken) ;
System.Console.WriteLine($"StatusCode = {rs.StatusCode}, Success = {rs.IsSuccessStatusCode}, Msg = {rs.ReasonPhrase}");
data = await rs.Content.ReadAsStringAsync();
System.Console.WriteLine ($"data = {data}");
}
return true;
catch (Exception ex)
{
System.Console.WriteLine($"Ошибка выполнения: {ex.Message}");
возвращает false;
}
Приведенный выше код приводит к следующему выводу:
StatusCode = OK, Success = True, Msg = OK
{
"access_token": "{Возвращён правильный токен доступа}",
"refresh_token" : null,
"token_type": "bearer",
"expires_in": 3600,
"date_Created": "2024-09-23T14:29:32.6320411Z"
}
---
StatusCode = Forbidden, Success = False, Msg =
data = {
«ошибки»: [
{
«код»: «Несанкционировано»,
«сообщение»: «Доступ к запрошенному ресурсу запрещен».
«подробности»: «В заголовке запроса отсутствует токен доступа».
]
Что я делаю не так со своим вторым клиентом HTTP-вызова.PostAsync(...), который в случае успеха должен вернуть код состояния 204?
Подробнее здесь: [url]https://stackoverflow.com/questions/79015313/lwa-rotation-in-c-sharp-code-access-token-is-missing-in-the-request-header[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия