Авторизация учетных данных клиента API ebay

Я хочу реализовать поток предоставления учетных данных клиента Ebay Browse API в Go с помощью пакета oauth2. Вот моя структура conf:

    conf := clientcredentials.Config{
        ClientID:     "My Client ID",
        ClientSecret: "My client Secret",
        Scopes:       []string{"https://api.ebay.com/oauth/api_scope"},
        TokenURL:     "https://api.sandbox.ebay.com/identity/v1/oauth2/token",
        EndpointParams: url.Values{"redirect_uri": {"the RuName"}},
    }

Затем я попытался сделать запрос, создав * http.Request:

req, err := http.NewRequest("GET", "https://api.sandbox.ebay.com/buy/browse/v1/item/v1|202117468662|0?fieldgroups=COMPACT", nil)
    if err != nil {
        log.Fatal(err)
    }
ctx := context.Background()
client := conf.Client(ctx)
res, err := client.Do(req)
if err != nil {
    log.Fatal(err)
}
defer res.Body.Close()

Но потом я получаю:

{
  "errors" : [ {
    "errorId" : 1003,
    "domain" : "OAuth",
    "category" : "REQUEST",
    "message" : "Token type in the Authorization header is invalid:Application",
    "longMessage" : "Token type in the Authorization header is invalid:Application"
  } ]
}

Оказалось, что при запросе к серверу ресурсов пакет Go устанавливает заголовок авторизации следующим образом:

Authorization: Application Access Token token_string 

Итак, я попытался вручную установить тип токена на Bearer, выполнив:

tok, err := conf.Token(ctx)
    if err != nil {
        log.Fatal(err)
    }

    client := conf.Client(ctx)
    req, err := http.NewRequest("GET", "https://api.sandbox.ebay.com/buy/browse/v1/item/v1|202117468662|0?fieldgroups=COMPACT", nil)
    if err != nil {
        log.Fatal(err)
    }
    req.Header.Set("Authorization", "Bearer " tok.AccessToken)
    res, err := client.Do(req)

Но я продолжаю получать ту же ошибку.

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
1
0
475
1

Ответы 1

Итак, есть проблема (ошибка?) С реализацией Ebay спецификации OAuth2.0, и мне пришлось повторно реализовать TokenSource пакета oauth2 / clientcredentials, чтобы установить тип токена на носитель, а не на токен доступа к приложению.

Другие вопросы по теме