0

django를 사용하여 Google을 통해 사용자를 인증합니다. 초기 요청 토큰을 & 사용자에게 Google로 리디렉션합니다. 그런 다음 Google에서 사용자를 내 웹 사이트로 리디렉션합니다 (제공하는 redirect_url 사용).Django request.user is empty

이 시점에서 request.user.idNone입니다. 따라서 request.user.username입니다. 왜 이런 일이 발생합니까? access_tokens (google이 나에게 보낸 정보)를 DB에 입력하려면 사용자 ID가 필요합니다.

어떤 조건에서 request.user 장고의 개체를 비울 수 있습니까?

갱신 1 : http://mywebsite.com/lserv?s=goog 제어 내 장고보기 기능으로 돌아옵니다 만, 장고 나에게 아무 이름이나 ID를 익명 사용자로 request.user 객체의 사용자를 제공합니다 나는이 URL 패턴으로 구글에서 다시 리디렉션. 왜?

UPDATE2 : 이 모든 갱신 3가

... 지금은 python manage.py runserver에서 실행 : 누구는 이것에 anythn 유사한 직면? 기본적으로 userrequest이 자동으로 지워지지 않습니다. & 나는 Anonymous 사용자로 지정됩니다. 이 모든 것은 브라우저의 사용자가 보낸 URL 요청간에 발생합니다. 왜?

+0

Google을 통해 인증하는 앱이 있습니까? 이에 대한 자세한 정보를 제공해야합니다. 귀하의 질문에 나는 Google 사용자 계정 django 사용자와 함께해야 볼지 않습니다. Google 사용자를 로컬 및 fk를 django 사용자에게 저장해야합니다. – pyeleven

+0

속성에 액세스 할 수 있으면 속성은 비어 있지 않습니다. –

+0

@ignacio'request.user'에 액세스 할 수 있지만 익명 사용자에게 할당되었습니다.'(Pdb) p request.user .__ class __() (Pdb) p는 없음 PDB() 페이지의 request.user.username ''내가 _service에서 돌아올 때 ' –

답변

1

장고의 인증 메커니즘은 Google 또는 다른 인증 서비스와 관련이 없습니다. Django 사이트에 제 3 자 인증 서비스를 통합하려면 직접해야합니다.

oauth2 (https://github.com/simplegeo/python-oauth2) 라이브러리를 사용하는 경우 README (https://github.com/simplegeo/python-oauth2/blob/master/README)입니다. MD)에는 "장고에 로그인하기/Twitter"라는 섹션이 있습니다.

1

Google에서 oauth api를 사용하는 경우. 사용자를 얻으려면 다음과 같이해야합니다.

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. 
      # ... 
+0

안녕하세요 abdul, Google의 애플리케이션 또는 oauth API를 사용하지 않습니다. 나는'oauth2' lib &를 사용하여이 기능을 작성했습니다 ... 사실 장고가 그 사용자에게 할당 한 사용자 ID를 얻는 것에 더 관심이 있습니다 ... –