Jor*_*Wii 1 python google-docs-api oauth-2.0
我正在尝试使用带有Python + Django和OAuth 2的Google Docs API.我通过google-api-python-client获得了OAuth访问令牌,其代码基本上是从http:// code复制的. google.com/p/google-api-python-client/source/browse/samples/django_sample/plus/views.py
现在,我假设我应该使用谷歌gdata API,v 2.0.17.如果是这样,我无法确切地找到如何授权使用gdata客户端进行的查询.http://packages.python.org/gdata/docs/auth.html#upgrading-to-an-access-token(无论如何看似过时)的文档说,将客户端上的auth_token属性设置为实例gdata.oauth.OAuthToken.如果是这种情况,我应该将哪些参数传递给OAuthToken?
简而言之,我正在寻找一个关于如何在给定OAuth访问令牌的情况下授权使用gdata API进行查询的简短示例.
小智 5
OAuth 2.0序列类似于以下内容(给定已注册应用程序的适当定义的应用程序常量).
生成请求令牌.
token = gdata.gauth.OAuth2Token(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET,
scope=" ".join(SCOPES),
user_agent=USER_AGENT)
Run Code Online (Sandbox Code Playgroud)授权请求令牌.对于简单的命令行应用程序,您可以执行以下操作:
print 'Visit the following URL in your browser to authorise this app:'
print str(token.generate_authorize_url(redirect_url=REDIRECT_URI))
print 'After agreeing to authorise the app, copy the verification code from the browser.'
access_code = raw_input('Please enter the verification code: ')
Run Code Online (Sandbox Code Playgroud)获取访问令牌.
token.get_access_token(access_code)
Run Code Online (Sandbox Code Playgroud)创建一个gdata客户端.
client = gdata.docs.client.DocsClient(source=APP_NAME)
Run Code Online (Sandbox Code Playgroud)授权客户.
client = token.authorize(client)
Run Code Online (Sandbox Code Playgroud)您可以通过执行以下操作来保存访问令牌以供以后使用(因此避免必须执行手动身份验证步骤,直到令牌再次到期):
f = open(tokenfile, 'w')
blob = gdata.gauth.token_to_blob(token)
f.write(blob)
f.close()
Run Code Online (Sandbox Code Playgroud)
下次启动时,您可以通过执行以下操作重用已保存的令牌:
f = open(tokenfile, 'r')
blob = f.read()
f.close()
if blob:
token = gdata.gauth.token_from_blob(blob)
Run Code Online (Sandbox Code Playgroud)
然后,对验证序列的唯一更改是通过指定refresh_token参数将此令牌传递给OAuth2Token:
token = gdata.gauth.OAuth2Token(client_id=CLIENT_ID,
client_secret=CLIENT_SECRET,
scope=" ".join(SCOPES),
user_agent=USER_AGENT,
refresh_token=token.refresh_token)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.花了一段时间来解决这个问题:-).