我正在尝试使用python客户端库通过服务帐户(客户端电子邮件和p12证书)连接到谷歌doubeclick api,如下例所示:
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(认为doubleclick api可能不是受支持的范围)但结果相同。
更新(示例代码):
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 @ ]
答案 0 :(得分:0)
NO_NETWORKS_TO_ACCESS错误特别意味着您对API端点进行了身份验证,但您的帐户未与网络关联。在此页https://developers.google.com/doubleclick-publishers/docs/reference/v201203/InventoryService?hl=en上搜索该错误。
您需要通过DoubleClick用户界面将您要认证的Google帐户作为受邀网络进行身份验证,或者您需要使用模拟。
DFP API和服务帐户的更具体的说明最近已发布到文档https://developers.google.com/doubleclick-publishers/docs/service_accounts。我建议您查看该文档的替代部分,以确定您是否更喜欢安装OAuth 2.0。