我正试图通过服务帐户(客户端电子邮件和p12证书)连接到google doubeclick api,使用python客户端库,如下例所示:
http://code.google.com/p/google-api-python-client/source/browse/samples/service_account/tasks.py
它给我返回了一个空的access_token:
In [9]: type(credentials.access_token)
Out[9]: <type 'NoneType'>
这有什么意义?我可能做错了什么吗?我也尝试过访问示例中的任务api(认为双击api可能不是一个受支持的范围),但结果相同。
UPDATE(示例代码):
from oauth2client.client import SignedJwtAssertionCredentials
import httplib2
from adspygoogle.dfp import DfpClient
f = file('/path/to/.ssh/google-api.p12', 'rb')
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials('<email>', key, scope='https://www.google.com/apis/ads/publisher')
credentials.refresh(http)
http = httplib2.Http()
http = credentials.authorize(http)
client = DfpClient.DfpClient(headers={'networkCode': '<code>', 'applicationName': 'test', 'userAgent': 'test', 'oauth2credentials': credentials})
inventory_service = client.GetInventoryService()
inventory_service.getAdUnitsByStatement({'query':''})
错误:
DfpAuthenticationError: [AuthenticationError.NO_NETWORKS_TO_ACCESS @ ]
NO_NETWORKS_TO_ACCESS错误特别表示您通过了API端点的身份验证,但您的帐户与网络无关。在此页面上搜索该错误https://developers.google.com/doubleclick-publishers/docs/reference/v201203/InventoryService?hl=en.
您需要通过双击用户界面将您正在验证的谷歌帐户邀请到网络,或者您需要使用模拟。
最近发布了一篇关于DFP API和服务帐户的更具体的文章https://developers.google.com/doubleclick-publishers/docs/service_accounts文件。我建议您查看该文档的备选部分,以确定您是否更喜欢安装OAuth 2.0的流。