2

Adwords API を使い始めたばかりですが、何らかの理由でまったく接続できないようです。

以下のコードは、チュートリアルから直接、エラーをスローします。

Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    client = AdWordsClient(path=os.path.join('Users', 'ravinthambapillai', 'Google Drive', 'client_secrets.json'))
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/adspygoogle/adwords/AdWordsClient.py", line 151, in __init__
    self._headers = self.__LoadAuthCredentials()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/adspygoogle/adwords/AdWordsClient.py", line 223, in __LoadAuthCredentials
    return super(AdWordsClient, self)._LoadAuthCredentials()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/adspygoogle/common/Client.py", line 94, in _LoadAuthCredentials
    raise ValidationError(msg)
**ValidationError: Authentication data is missing.**

from adspygoogle.adwords.AdWordsClient import AdWordsClient
from adspygoogle.common import Utils
client = AdWordsClient(path=os.path.join('Users', 'this-user', 'this-folder', 'client_secrets.json'))
4

2 に答える 2

2

2つの問題があるようです。最初に、最後のパス要素を削除してみてください。私が思い出す限り、pathパラメーターは認証ピクル、ログなどを含むディレクトリを想定しています。このアプローチでは、有効なauth_token.pkl.

次に、認証に OAuth2 を使用しているようです (ファイルから推測していclient_secrets.jsonます)。これを機能させるには、ライブラリを使用して、パラメータにoauth2clientoauth2credentials インスタンスを指定する必要があります。headersAdWordsClient

以下は、クライアント ディストリビューションのファイルからそのまま引用examples/adspygoogle/adwords/v201302/misc/use_oauth2.pyしたもので、どのように機能するかがわかります。

# We're using the oauth2client library:
# http://code.google.com/p/google-api-python-client/downloads/list
flow = OAuth2WebServerFlow(
  client_id=oauth2_client_id,
  client_secret=oauth2_client_secret,
  # Scope is the server address with '/api/adwords' appended.
  scope='https://adwords.google.com/api/adwords',
  user_agent='oauth2 code example')

# Get the authorization URL to direct the user to.
authorize_url = flow.step1_get_authorize_url()

print ('Log in to your AdWords account and open the following URL: \n%s\n' %
     authorize_url)
print 'After approving the token enter the verification code (if specified).'
code = raw_input('Code: ').strip()

credential = None
try:
credential = flow.step2_exchange(code)
except FlowExchangeError, e:
sys.exit('Authentication has failed: %s' % e)

# Create the AdWordsUser and set the OAuth2 credentials.
client = AdWordsClient(headers={
  'developerToken': '%s++USD' % email,
  'clientCustomerId': client_customer_id,
  'userAgent': 'OAuth2 Example',
  'oauth2credentials': credential
})
于 2013-05-07T09:59:02.340 に答える