2012-12-06 3 views
1

다음 코드로 사용자가 (페더레이션 ID를 통해) 로그인했는지 확인하는 Google 애플리케이션 엔진에 webapp가 있습니다. 방금 도메인 이름을 변경했는데 어떤 이유로 현재 사용자를 인식하지 못하고 있습니다. 이것은 openID가 약간의 테스트를 통해 발견 한 도메인 이름에 따라 변경되기 때문입니다. 이러한 사용자가 로그인 할 수있는 임시 해결책이나 방법이 있습니까?도메인 이름에 따라 변경되는 페더레이션 ID에 대한 해결 방법은 무엇입니까?

user = users.get_current_user() 
currentregistereduser = None 
try: 
    user_db_qry = User.query(User.theid == user.federated_identity()) 
    user_db_list = user_db_qry.fetch(1) 
    currentregistereduser = user_db_list[0] 

    # I go on here to do all of the stuff for a logged in user 

#if the user does not exist yet 
except IndexError: 
    logging.error("indexerror" + str(User.theid) + " and " + str(user.federated_identity())) 
    user_db = User(
     name=user.nickname(), 
     email=user.email(), 
     theid=user.federated_identity(), 
     visits = 0, 
     medals = 0, 
     prestige = 1, 
     ) 
    user_db.put() 
    #they go on to create their profile data here 
    self.redirect("/profile") 
+0

는 (또는 사용자)는 여전히 다른 도메인에 액세스 할 수 있습니까? –

+0

예 아직 소유하고 있으며 지금은 페이지의 페이지를 새 URL로 리디렉션하고 있지만 전체 사이트를 되 돌리는 것은 그리 어렵지 않을 것입니다. 그게 왜? – clifgray

답변

3

이것은 OpenID를 구현할 때 StackExchange가 직면 한 것과 비슷한 문제인 것처럼 보입니다. 당신은 그들이 여기 처리하는 방법을 볼 수 있습니다 http://blog.stackoverflow.com/2010/04/openid-one-year-later/

을 해당 페이지에서 :

그래서 우리의 크로스 사이트 사용자 계정 매칭 이제이 방식으로 작동합니다 :

  1. 일치를 GUID에 의해. 이는 계정 연결 중에 생성하여 지정하는 것이므로 완벽한 지문입니다. 오픈 ID URL에 의해

  2. 일치합니다. 이 방법은 대다수의 OpenID 제공 업체에서 사용할 수 있습니다. 오픈 ID로

  3. 경기는 이메일 주소를 제공하는 ... 당신이 우리의 신뢰 화이트리스트에있는 경우. 이 기능은 도메인 별 식별자를 생성하는 희귀 한 OpenID 제공 업체 (현재 Google GMail 만 해당)에게 유용합니다.

또한 OpenID 라이브러리를 사용해 볼 수도 있습니다. 일부는 다음과 같습니다 : http://openid.net/developers/libraries/

희망이 도움이됩니다.

+0

링크에 대한 설명에 매우 감사 드리며 문제 해결 방법에 대한 몇 가지 좋은 옵션을 제공합니다. 다행히도 Google을 사용하는 모든 사용자에게 이메일을 보내므로 도움이되었습니다. – clifgray

+0

이 작동하고 사용자가 다시 돌아 왔습니다. 다시 한 번 감사드립니다! – clifgray

+0

Google과 OAuth 사용자가 동일한 지 알고 싶습니까? – clifgray