2011-03-24 21 views
3

,允許用戶通過Foursquare的登錄,然後我這個用戶創建一個新的會話。如果用戶是系統新手,他們需要通過Hunch登錄,則可以根據兩個系統的信息生成用戶配置文件。我讓他們都分別登錄到每個應用程序,但我怎樣才能將登錄Foursquare的用戶與Hunch中的用戶關聯起來。 我爲它的想法是莫名其妙創建用戶模型中的會話ID的引用,或使用會話ID作爲在預感符號的參數,但我不知道這是否會是最好的主意。有什麼其他的方式可以創建協會嗎?我目前使用OAuth連接方法的Python

回答

0

這樣做會像下面這樣最簡單的方法:

  1. 發送用戶在Foursquare的
  2. 簽署當用戶返回時,數據存儲爲他們創造紀錄。
  3. 發送用戶預感登錄,但是包括您在步驟2中繼續URL創建記錄的ID。
  4. 當用戶返回時,使用URL中嵌入的ID將用戶的Hunch信息添加到其用戶記錄中。
+0

我試圖在繼續URL中添加ID,但它導致它失敗,例如我的重定向到Hunch是'http://hunch.com/authorize/v1/?app_id=111&next=http: localhost:8086 /?access_token = {{access_token}} /'返回的URL是http:// localhost:8086 /?access_token = aaa?auth_token_key = aaa&user_id = aa&next = http%3A%2F%2Flocalhost%3A8086%2F% 3Faccess_token%qq%2F'但解析它時找不到auth_token_key – qwop 2011-03-25 15:41:01

+0

@qwop聽起來好像預感並不正確地編碼URL。你有沒有嘗試以另一種方式傳遞它 - 比如作爲URL的一部分?例如,http://foo.com/auth/user_id? – 2011-03-27 05:35:02

0

您可以創建父協會,以便SiteUserFoursquareAuthHunchAuth的父級。

當用戶首次使用Foursquare登錄時,您將創建SiteUser模型,然後使用parent=just_created_user創建FoursquareAuth模型。然後,當您通過預感將用戶關閉以進行身份​​驗證時,您可以在回調參數中包含用戶的ID或會話ID。當回調發生時,您獲取用戶密鑰並使用parent=previously_created_user創建HunchAuth

SiteUser模型包含來自兩個源(名稱,位置,最後籤等)的組合的信息。該*Auth模型只包含任何保證唯一標識符是由每個提供商(USER_ID,的access_token等)提供。

這樣,如果您有用戶對象,您可以找到Foursquare或Hunch認證數據(使用祖先過濾器),並且可以通過加載任何*Auth模型並獲取其parent()來找到用戶。

(注意:我調用模型SiteUser不與在App Engine中的可用User對象混淆)