получить токены конечного пользователя для отдыха eBay в Python

в настоящее время я использую eBay Trading API с Python. Спасибо: https://github.com/timotheus/ebaysdk-python

Я использовал https://github.com/luke-dixon/django-ebay-accounts для получения токенов для пользователя.

Теперь я хотел бы использовать Restful API (https://developer.ebay.com/docs#Acc< /а>). Я не думаю, что смогу использовать токены, которые у меня уже есть. Итак, благодаря получению токена Ebay OAuth мне удалось его получить. Но я думаю, что что-то упустил, потому что во время процесса я не могу включить информацию для пользователя (имя/пароль), поэтому, например, https://api.ebay.com/sell/fulfillment/v1/order?limit=10 возвращает:

{
  "errors": [{
    "errorId": 1100,
    "domain": "ACCESS",
    "category": "REQUEST",
    "message": "Access denied",
    "longMessage": "Insufficient permissions to fulfill the request."
  }]
}

Любая идея, как я могу получить токен для пользователя?

Просто фрагмент кода, чтобы было понятнее:

AppSettings = {
            'app_id': EBAY_PRODUCTION_APPID,
            'app_secret': EBAY_PRODUCTION_CERTID,
            'dev_id': EBAY_PRODUCTION_DEVID, 
            'ruName': EBAY_PRODUCTION_RU_NAME 
        }
authHeaderData = AppSettings['app_id'] + ':' + AppSettings['app_secret']
        encodedAuthHeader = base64.b64encode(authHeaderData.encode())

        headers = {
            "Content-Type": "application/x-www-form-urlencoded",
            "Authorization": "Basic ".encode() + encodedAuthHeader
        }
body = {
            "grant_type": "client_credentials",
            "redirect_uri": settings.EBAY_PRODUCTION_RU_NAME,
            "scope": "https://api.ebay.com/oauth/api_scope"
        }

        data = urllib.parse.urlencode(body)

        tokenURL = "https://api.ebay.com/identity/v1/oauth2/token"

        response = requests.post(tokenURL, headers=headers, data=body)
        authDict = response.json()

Итак, запрос на запуск, который мне нужен:

r = requests.get("https://api.ebay.com/sell/fulfillment/v1/order?limit=10",
                         headers={"Authorization": "{}".format(authDict['access_token']),
                                  "Content-Type": "application/json",
                                  "X-EBAY-C-MARKETPLACE-ID": "EBAY_UK",
                                  "Accept": "application/json"
                                  })

person gerpaick    schedule 07.03.2019    source источник
comment
вместо имени пользователя/пароля? Извините, я запутался. Какую часть кода вы имеете в виду?   -  person gerpaick    schedule 08.03.2019
comment
не обращайте внимания на этот комментарий. Я был в замешательстве :D   -  person Lord Elrond    schedule 08.03.2019
comment
comment
Определенно не дубликат этот вопрос... Получение токена доступа и попытка использовать токен доступа - две совершенно разные вещи.   -  person Lord Elrond    schedule 08.03.2019


Ответы (1)


Согласно этому, я считаю, что вы должны используйте следующий заголовок авторизации:

headers['Authorization'] = "Bearer " + USER_ACCESS_TOKEN

Где USER_ACCESS_TOKEN – это массивный токен, сгенерированный на этой странице. .

Это выглядит примерно так:

'v^1.1#i^1#p^3#f^0#I^3#r^0#t^ ...
...
...
...
... bfxr8BJtphi2M/oo2xpYo2hiMWxmZt4fVzS7qe2tMXUSAAA='

Используемый вами Authorization предназначен для запросов, которые не связаны с конкретной учетной записью пользователя (результаты поиска, метаданные для элементов и т. д.). Чтобы делать запросы, предназначенные для определенных пользователей (например, заказы или обновления запасов), вы должны получить их разрешение через их USER_ACCESS_TOKEN.

Если вам нужна помощь в получении USER_ACCESS_TOKEN, дайте мне знать, и я обновлю информацию.

Обратите внимание, что я пытаюсь сделать то же самое, что и вы, уже около 6 часов, и до сих пор не понял, поэтому я не уверен в этом ответе.

Надеюсь это поможет. Если вы это поймете, вы должны опубликовать ответ, чтобы другие тоже могли (например, я xD).

eBay определенно выигрывает золото за худшие API-документы в истории API-документов...

person Lord Elrond    schedule 08.03.2019
comment
Спасибо за ваш комментарий. Я дам еще одну попытку решить это в понедельник. Я опубликую свои результаты. - person gerpaick; 09.03.2019
comment
Я не уверен, что вы смогли решить проблему. longMessage: Недостаточно прав для выполнения запроса. возникает, если токены не имеют правильной области действия, когда был запрошен грант авторизации_кода. - person Senthilkumar Gopal; 19.03.2019
comment
Вы, ребята, заставили это работать? Документы по API просто ужасны. Мне удалось исправить некоторые из примеров с ошибкой по умолчанию, которые представляет ebay, но я также нажимаю «Недостаточно разрешений для выполнения ошибки запроса». - person carl crott; 07.05.2020
comment
@карлкротт у меня есть. Если вы зададите отдельный вопрос, я могу вам помочь. Только не забудь отметить меня, чтобы я это увидел - person Lord Elrond; 08.05.2020
comment
@reinstate-monica Кажется, я отметил тебя. В качестве резервной копии stackoverflow.com/q/61706632/365798 - person carl crott; 10.05.2020
comment
@SenthilkumarGopal, можете ли вы посоветовать, что я продолжаю получать {'error': 'invalid_client', 'error_description': 'сбой аутентификации клиента'} - person sunny babau; 24.07.2020
comment
@sunnybabau Конечно, можно ссылку на ваш вопрос? - person Lord Elrond; 24.07.2020
comment
@ReinstateMonica Спасибо, сэр. Вот мой вопрос stackoverflow.com /вопросы/63063985/ - person sunny babau; 24.07.2020
comment
@sunnybabau Пожалуйста, обратитесь к ответу здесь вызов API"> stackoverflow.com/questions/63063985/. Надеюсь, что это полезно. - person Senthilkumar Gopal; 25.07.2020