3

我目前正在使用 Oauth 允许用户通过 Foursquare 登录,然后为该用户创建一个新会话。如果用户是系统的新手,他们被要求通过 Hunch 登录,然后可以根据来自两个系统的信息生成用户配置文件。我让他们都分别登录到每个应用程序,但是如何将使用 Foursquare 登录的用户与 Hunch 中的用户相关联。我的想法是以某种方式在用户模型中创建对会话 ID 的引用,或者使用会话 ID 作为预感登录的参数,但我不确定这是否是最好的主意。还有其他方法可以创建关联吗?

4

2 回答 2

0

您可以创建父关联,以便它SiteUserFoursquareAuth和的父关联HunchAuth

当用户首次使用 Foursquare 登录时,您创建SiteUser模型,然后FoursquareAuth使用parent=just_created_user. 然后,当您通过预感发送用户进行身份验证时,您在回调参数中包含用户的 ID 或会话 ID。当回调发生时,您将获得用户的密钥并HunchAuth使用parent=previously_created_user.

SiteUser模型包含来自两个来源(名称、位置、上次签到等)的组合信息。这些*Auth模型只包含每个提供者提供的任何保证唯一标识符(user_id、access_token 等)。

这样,如果您有用户对象,您可以找到 Foursquare 或 Hunch 身份验证数据(使用祖先过滤器),并且您可以通过加载任何*Auth模型并获取其parent().

(注意:我调用模型是为了不将其与App Engine 中可用SiteUser的对象混淆)User

于 2011-03-24T19:49:48.300 回答
0

最简单的方法如下:

  1. 将用户发送到foursquare进行登录
  2. 当用户返回时,在数据存储中为他们创建一条记录。
  3. 将用户发送到 Hunch 以登录,但在继续 URL 中包含您在步骤 2 中创建的记录的 ID。
  4. 当用户返回时,使用嵌入在 URL 中的 ID 将用户的 Hunch 信息添加到他们的用户记录中。
于 2011-03-25T01:18:25.000 回答