2012-03-02 6 views
1

私のフュージョンテーブルにアクセスするアプリケーションのアクセストークンとリフレッシュトークンの両方を取得しようとしています。私はOAuth 2.0メソッドを使用しており、アプリケーションを訪問したユーザーがレコードをINSERTすることができます。Python経由でFusion TablesのOAuth 2.0アクセスとリフレッシュトークンを取得する

私が遭遇している問題は、Google hereで説明されているpython scriptを実行しているときです。 (Pythonの2.7インタプリタとPyDevはで、)箱から出してコードを実行しているときに私が受け取るエラーは、次のとおりです。

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と関係があると読んでいますが、明らかに私は掴んでいますこの時点でストロー。

ありがとうございました。

答えて

5

私は元の質問に記載されているのと同じ問題を抱えていて、何も出てこなかった。しかし、thisが見つかりました。元のリクエストには、リフレッシュトークンが送信されるように、access_type=offlineが必要でした。だから私はそれをKathrynのoauth_tokens scriptに追加しました。

編集行17:

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

まあ、私は、これは私の問題を解決するだろうと思ったが、それはしませんでした。私はアプリケーションが最初に "オンライン"のデフォルトアクセスタイプで登録されているので、リフレッシュトークンを与えないと思います。これは、Googleアカウント設定ページでアプリケーションへのアクセスを取り消すことで解決しました。

アカウント - > [セキュリティ] - > [アプリケーションとサイトを認証する - >編集

私は、これは私にしばらくの間、ナットを運転していたとして、これは誰かに役立ちます願っています。

私はGitHubの上で使用していたスクリプトを追加しました:私は応答を印刷するときhttps://github.com/mejackreed/fusion-tables-oauth-tokens/blob/master/oauth.py

+0

こんにちは、私はしばらくの間、これをぶち残してきましたが、成功は限られていました。私は上記の17行目を編集しました。最初はうまくいきました:私はアクセストークンとリフレッシュトークンを取り戻していました。しかし、悲しいかな、今日私は同じ正確な手順を試してみて、前と同じエラーが出るようになっています...そして、私は 'access_type = offline'を取り出し、アクセスを取り消して試してみました。 Fusion Tables on-offなどのAPIコンソールアクセスを切り替えることができますが、この時点ではPythonスクリプトを使用することはできなくなりました。次の? – woody

+0

Hmm ..あなたのスクリプトで何が起こっているのか分かりませんが、私はちょうど私のことを確認しました。 – Jack

0

私はこの問題を再現することができないため、診断が困難です。実際に返されているものを見るには、38行目の応答を単純に印刷できますか?これは問題が何かを示す手がかりを与えるかもしれません。

+0

私は3600 "(「access_tokenは」、「TOKEN_TYPE」(「無記名」)の値を取得し、「expires_in」 ")。私はこれは、 'refresh_token'が何らかの形で失敗していることを意味します。 このエラーは、プログラムからの文字列リクエストをすべて入力した後に発生することにも言及しておきます。 Fusion TablesでPOSTリクエストを実行するために必要なのは「access_token」ですか?また、より永続的なトークンを生成する方法はありますか(これはおそらく 'refresh_token'で行われると思います)。 – lando

+1

私はOAuthトークンを取得するこの方法を断念しました。とにかく、キャサリンのお手伝いをありがとう! – lando

関連する問題