1

我正在将 google-python-client-api 用于 Blogger API(服务帐户 - OAuth)。

这是我的代码(这是我的任务 api示例

import httplib2
import pprint
import sys

from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials

f = file("privatekey.p12", "rb")
key = f.read()
f.close()

credentials = SignedJwtAssertionCredentials(
    "2-abcdr@developer.gserviceaccount.com",
    key,
    scope = "https://www.googleapis.com/auth/blogger")

http = httplib2.Http()
http = credentials.authorize(http)

service = build("blogger", "v3", http=http)

当我运行这段代码时,它的显示

Message File Name   Line    Position    
Traceback               
    <module>    D:\Code\myScripts\py\gData.py   20      
    build   build\bdist.win32\egg\apiclient\discovery.py    191     
    new_request build\bdist.win32\egg\oauth2client\client.py    402     
    _refresh    build\bdist.win32\egg\oauth2client\client.py    569     
    _do_refresh_request build\bdist.win32\egg\oauth2client\client.py    625     
AccessTokenRefreshError: invalid_grant      

有什么问题,我应该如何解决?

我什至尝试tasks.py了示例代码..它甚至显示相同的错误

我非常确定服务帐户电子邮件地址是正确的

4

1 回答 1

1

我在查询 BigQuery 时遇到了类似的问题。从互联网上存在的少量文档来看,这似乎是一个问题,即分辨率差的时钟会导致时序错误,从而使 SignedJWTCredentials 无效。一种建议的解决方案是确保您的时钟计时器与 ntp 同步。由于我正在部署到 Heroku,我的解决方案是优雅地失败然后重试。

另请参阅https://code.google.com/p/google-api-php-client/wiki/OAuth2#Solving_invalid_grant_errors

于 2012-10-19T12:53:00.273 回答