Facebook登录流程到nodejs

时间:2015-08-07 03:38:54

标签: node.js facebook rest facebook-graph-api facebook-login

我正在为使用电子邮件和Facebook登录的应用程序开发REST API后端服务。让我们假装这个应用程序是一个待办事项列表应用程序,用户可以登录并添加他们以后可以在不同设备上查看的备注。

"使用电子邮件登录"非常简单,应用程序会发出请求:

URL: /v1/login
Params: email, password

然后,如果所有这些信息都正确,则serivce返回访问令牌,以便我们知道创建,更新或删除注释/列表项的用户的身份。

现在为facebook方面。我在StackOverflow和Facebook的文档中看到了几个不同的答案。有人说,只需传入id并使用匹配的id登录用户。这意味着从Facebook SDK调用登录功能,并保持该ID在请求中发送。

URL: /v1/login/facebook
Params: id

这会起作用但看起来非常不安全。任何人都可以获得其他人的Facebook ID,只需向服务器发送请求即可。 Facebook的文档也提到了使用帐户电子邮件。我们如果用户在Facebook上更改了他们的电子邮件,他们再也无法登录此应用程序了。另一个安全暗示是每次都从Facebook传递令牌。由于这些令牌可能会更改或过期,因此在失效日期之后确实无法登录。

我知道的最后一种方法是传递应用秘密:

URL: /v1/login/facebook
Params: id, secret

如果您使用https连接到服务器,这似乎是最安全的。这种方法的缺点是,如果Facebook秘密令牌被重置怎么办?我的意思是你总是可以打电话给服务器来请求并检查令牌是否被重置,如果是,则传回新的。但是如果有人有权访问端点来检查过期令牌,它可以给他们新的秘密令牌。

我知道我们在这里处理互联网,并且总会存在安全漏洞,并且没有完美方式来做到这一点。但最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

尝试为该用户发送facebook_token。     网址:/ v1 / login / facebook     参数:facebook_token

和服务端对facebook graph api进行服务调用,以使用facebook_token获取有关该用户的信息。

从该响应中获取facebook id并使用它向该用户提供数据。