14

我试图在我的应用程序中使用 facebook/twitter 功能实现登录,我阅读了一些关于 oAuth 的指南,我想我理解了一些基本概念,这就是我所理解的(如果我错了,请纠正我):

  1. myApp 向 oAuth 提供者发送请求,获取 (A) 请求令牌。
  2. 发送用户对 (A) 进行身份验证,返回 (B) 已验证的请求令牌(这就是所谓的 oAuth 令牌吗?)
  3. 使用 (B) 获取 (C) 访问令牌。
  4. 使用 C 访问用户信息。

这是我无法理解的,我应该使用/存储哪一个来识别用户?我考虑过使用其中每一个的可能性,但我总是坚持如何检查用户之前是否登录过......

4

1 回答 1

13

如果您只需要身份验证,那么仅存储user_id就足够了。

所以创建另一个表,如:

id | service_name | user_id | my_user_id

其中service_nametwitterfacebook, user_id- 是来自 twitter/facebook 的用户 ID,并且my_user_iduser_id您的身份验证系统中的 a。

所以:

SELECT my_user_id FROM oauths WHERE service_name = 'twitter' AND user_id = 42

将返回您的系统 user_id 或什么都没有

PS:service_name可以(并且应该)被规范化,我将其保留为字符串只是为了简化示例

PPS:正如您在评论中所说,您可能想要“发布/推特”。

在这种情况下,您需要为 twitter 存储用户的访问令牌,并为 facebook 存储任何其他内容,但publish_stream在验证用户时请求权限。

于 2012-04-11T05:22:26.527 回答