通过Python检索Fusion Tables的OAuth 2.0访问和刷新令牌

时间:2012-03-02 22:21:14

标签: oauth-2.0 python-2.7 google-fusion-tables

我正在尝试检索访问和刷新令牌,以便应用程序访问我的融合表。我正在使用OAuth 2.0方法,只需要允许访问我的应用程序的用户将记录插入到我的融合表中。

我遇到的问题是运行Google python script所描述的here。运行开箱即用的代码时遇到的错误(在PyDev中,使用Python 2.7解释器)是:

Traceback (most recent call last):
File "\\..\OAuthToken\root\oauth_tokens.py", line 59, in <module>
    redirect_uri)
  File "\\..\OAuthToken\root\oauth_tokens.py", line 41, in retrieve_tokens
    refresh_token = tokens['refresh_token']
KeyError: 'refresh_token'

有人为我提供解决方案吗?我在GitHub上找到了某个地方(github.com/ff0000/red-social-auth/issues/3 - 我不允许发布更多链接)与refresh_tokens半退休有关,但显然我只是抓住了在这一点上秸秆。

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

所以我遇到了与原问题中所述相同的问题,并且没有提出任何问题。但后来我找到this,指定原始请求需要access_type=offline才能发送刷新令牌。所以我把它添加到凯瑟琳的oauth_tokens script就好了。

编辑第17行:

  print '%s?client_id=%s&redirect_uri=%s&scope=%s&access_type=offline&response_type=code' % \

嗯,我认为这可以解决我的问题,但事实并非如此。我想因为应用程序最初使用默认访问类型“在线”注册,所以它不会授予刷新令牌。通过撤消Google帐户设置页面下的应用程序访问权限解决了这个问题。

帐户 - &gt;安全 - &gt;授权应用程序和站点 - &gt;修改

我希望这可以帮助别人,因为这让我疯了一段时间。

我在Github上添加了我正在使用的脚本:https://github.com/mejackreed/fusion-tables-oauth-tokens/blob/master/oauth.py

答案 1 :(得分:0)

我无法重现问题,这使得诊断变得困难。你能简单地在第38行打印出来看看实际返回的内容吗?这可能会为问题提供一些线索。