2012-12-06 41 views
1

我有一個谷歌應用程序引擎上的Web應用程序,它檢查用戶是否通過以下代碼登錄(通過聯合身份證)。我只是更改了域名,現在由於某種原因,它不能識別我當前的任何用戶。這是因爲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

這似乎是StackExchange在實施OpenID時遇到的問題。通過GUID

  1. 匹配:你可以看到他們是如何處理在這裏: http://blog.stackoverflow.com/2010/04/openid-one-year-later/

    在這個頁面:

    所以我們的跨網站用戶帳號匹配現在以這種方式工作。這是我們在帳戶關聯期間生成和分配的,因此它是完美的指紋。

  2. 通過OpenID URL匹配。這適用於絕大多數OpenID提供者。

  3. 匹配OpenID提供的電子郵件地址...如果你在我們的信任白名單。這適用於那些生成域特定標識符的罕見OpenID提供者(目前僅限於Google GMail)。

您也可以嘗試使用OpenID庫。幾個在這裏列出: http://openid.net/developers/libraries/

希望這可以幫助。

+0

非常感謝這個鏈接,一個非常明確的解釋,並給了我幾個很好的選擇來解決問題的方法。幸運的是,我要求Google爲所有用戶發送電子郵件,以便幫助您! – clifgray

+0

剛剛得到它的工作,並讓我們的用戶回來。再次感謝! – clifgray

+0

您是否對OAuth用戶使用Google的情況是否一致? – clifgray