我目前正在使用Oauth让用户通过Foursquare登录,然后为该用户创建一个新会话。如果用户是系统中的新用户,则要求他们通过Hunch进行登录,这可以基于两个系统的信息生成用户配置文件。我已经让他们分别登录到每个应用程序中,但是如何将登录到Foursquare的用户与登录到Hunch的用户关联起来呢?
我的想法是在用户模型中创建对会话ID的引用,或者将会话ID用作Hunch登录的参数,但我不确定这是否是最好的方法。是否有其他方式可以创建关联?
您可以创建一个父关联,使得SiteUser
成为FoursquareAuth
和HunchAuth
的父级。
当用户首次使用Foursquare登录时,您需要创建SiteUser
模型,然后使用parent=just_created_user
创建FoursquareAuth
模型。然后,当您将用户发送到Hunch进行身份验证时,您需要在回调参数中包含用户ID或会话ID。当回调发生时,您可以获取用户的密钥,并使用parent=previously_created_user
创建HunchAuth
。
SiteUser
模型包含来自两个来源的组合信息(名称、位置、最后签到等)。*Auth
模型仅包含每个提供程序提供的任何保证唯一标识符(user_id、access_token等)。
这样,如果您拥有用户对象,则可以使用祖先过滤器查找Foursquare或Hunch身份验证数据,并且可以通过加载任何*Auth
模型并获取其parent()
来查找用户。
SiteUser
,以避免与App Engine中可用的User
对象混淆)最简单的方法是按照以下步骤进行:
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