1

djangoを使用して、Googleを通じてユーザーを認証しています。私は最初のリクエストトークンを取得し、認証のためにユーザーをグーグルにリダイレクトします。その後、グーグルはユーザーを私のウェブサイトにリダイレクトします(私が提供するredirect_urlを使用して)。

この時点request.user.idNoneそうですrequest.user.username、なぜこれが起こっているのですか?(グーグルが送ってくれた)access_tokensをDBに入力するにはユーザーIDが必要です。

どのような条件下request.userでDjangoのオブジェクトを空にすることができますか?

更新1:http://mywebsite.com/lserv?s=googコントロールがdjangoビュー機能に戻ったときにurlパターンを使用してGoogleからリダイレクトされたが、djangoはrequest.userオブジェクトユーザーをユーザー名またはIDのない匿名ユーザーとして提供します。なぜ?

UPDATE2: これはすべて今のところ実行されpython manage.py runserverています...

UPDATE3:誰かがこれに似た何かに直面しましたか?基本的に、理由もなく、userinはrequest自動的にクリアされ、Anonymousユーザーとして割り当てられます。これはすべて、ユーザーからの(ブラウザーからの)URL要求の間に発生します。なんで?

4

2 に答える 2

1

Googleのoauthapiを使用している場合。ユーザーを取得するには、次のようなことを行う必要があります

from google.appengine.api import oauth

# ...
        try:
            # Get the db.User that represents the user on whose behalf the
            # consumer is making this request.
            user = oauth.get_current_user()

        except oauth.OAuthRequestError, e:
            # The request was not a valid OAuth request.
            # ...
于 2011-03-31T09:15:17.467 に答える
1

Djangoの認証メカニズムは、Googleやその他の認証サービスとは何の関係もありません。サードパーティの認証サービスをDjangoサイトと統合する場合は、自分で行う必要があります。

oauth2ライブラリを使用している場合は、 READMEに「TwitterでDjangoにログインする」という名前のセクションが役立つ場合があります。

于 2011-04-11T08:08:50.800 に答える