0

OAUTH2 機能を既存の App Engine アプリケーションに追加しようとしましたが、いくつか問題がありました。提案があれば感謝します。

私の手順は次のとおりです。 1. Google Api コンソールでクライアント ID を作成し、OAUTH フローを作成します。2. ユーザーがloginページにアクセスすると、Google ログイン ページにリダイレクトされます。3. 条件に同意すると、ユーザーはアプリケーションのランディング ページにリダイレクトされます

from oauth2client.client import OAuth2WebServerFlow
from django.http import HttpResponseRedirect

flow = OAuth2WebServerFlow(client_id='my_client_id',
                           client_secret='my_client_secret',
                           scope='https://www.googleapis.com/auth/userinfo.email',
                           redirect_uri='http://www.example.com/')

def login(request):
    return HttpResponseRedirect(auth_uri)

def ecoLandingPage(request):
    code=request.GET.get('code', '')
    if code:
        cred = "" + code
        credentials = flow.step2_exchange(cred)

私の質問は次のとおりです。

  1. ユーザーがサインインしてランディング ページにリダイレクトされた後、ページを更新すると、次のエラーが表示されます。これはflow.step2_exchange(cred). これを修正する方法はありますか?

    INFO 2014-08-21 16:39:56,437 client.py:1304] アクセス トークンの取得に失敗しました: {

    「エラー」:「invalid_grant」、

    "error_description": "無効なコードです。"

    }

  2. また、App Engine で Django プロジェクトを実行しているため、現在のユーザーの情報を確認するには、ページの右隅に名前を掲載したいので、どのような方法が最適ですか。良い例はありますか?

ありがとう!

4

1 に答える 1

0

OAuth は管理が困難な場合があります。個人的には、彼らがここで行っていることを行い、decorator クラスを使用します。そうすれば、リフレッシュや現れる他の多くの獣をカバーできます。

ユーザー情報を取得するにはuser クラスでユーザー情報を取得します。チュートリアルで実際の動作を見ることができます。「users.create_login_url」について心配する必要はありません。とにかく、OAuth ではログインが必要です。

于 2014-08-21T18:46:15.973 に答える