Бото делает запрос от имени кого-то другого - PullRequest
1 голос
/ 07 июня 2019

У меня есть аккаунт, который я зарегистрировал как разработчика Amazon.(Давайте назовем это учетной записью developer)

У меня есть другая учетная запись, которую я рассматриваю как учетную запись продавца (также учетная запись разработчика amazon).(Давайте назовем эту учетную запись seller)

Я хочу, чтобы моя учетная запись developer отправляла запросы в amazon от имени seller.

Так что seller вызывает мою developerприложение, которое общается с Amazon.

В соответствии с условиями, я должен использовать developer's доступ и секретный ключ.

Я дал свой seller developer IDи у меня есть Seller Id, Marketplace Id и MWS Auth Token.

Однако я не уверен, как заставить работать MWSConnection, так как кажется, что boto не имеетпараметр для ввода MWS Auth Token

Я пытался.

access_key_id = developer_access_key_id
secret_key = developer_secret_key
seller_id = seller_id
MWSConnection(access_key_id, secret_key, SellerId=seller_id)

Это приводит к ошибке AccessDenied

Есть ли способ заставить это работать,где я (developer) могу сделать запрос от имени кого-то другого (seller)?

1 Ответ

0 голосов
/ 18 июня 2019

Некоторые вещи, которые могут не быть вашей проблемой, но могут быть

Несколько слов о том, что может быть вашими проблемами, перед более ясным решением:

  1. boto3 не поддерживает MWS. Если вы используете его, он не будет работать. Используйте boto
  2. MWS в регионах, которые не являются Северной Америкой (NA), требуется дополнительная настройка, которую вы, возможно, не предоставляете

В чём, вероятно, ваша проблема ...

Вы входите и пытаетесь установить идентификатор продавца в аргументах MWS с помощью:

MWSConnection(access_key_id, secret_key, SellerId=seller_id)

Вы, вероятно, должны делать это так:

from boto import mws

from boto.mws.connection import MWSConnection
accessKey = developer_access_key_id # Python prefers camelCase
secretKey = developer_secret_key    # Python prefers camelCase
merchantID = "XXXXXXXXXX"           # You never specified this

mws = MWSConnection(accessKey, secretKey)
mws.Merchant = merchantID
mws.SellerId = merchantID

Несмотря на то, что в качестве аргумента ключевого слова можно передать SellerId, я считаю, что вам необходимо указать all именованных аргументов, если вы не знаете, каков их явный порядок.

Аргументы функции python по сути являются словарём, и python просто делает ваше удобство для выравнивания порядка вызова с порядком объявления. Вот почему вы можете быть явным и использовать argumentName = argumentValue, ... в любой порядок в вызове, и при этом ваша функция будет работать.

...