我和我的团队正在开发一个适用于 Android 的本地移动社交网络,该网络允许用户使用 Facebook 登录。我设法为 Android 实现了 Facebook SDK,但我正在努力弄清楚如何正确/安全地验证使用 facebook 登录的用户仅使用从 Facebook 收到的凭据。目前我的系统是这样的:
第 1 步。用户从 Android 客户端按下使用 Facebook 登录并向我的应用授予权限。
第 2 步。在用户授予我们权限后,Facebook 会向我们发送一个响应,其中包括用户的 fb 用户 ID、电子邮件和 token (如果这是用户第一次使用 facebook 登录,还包括其他信息)
第 3 步。信息被发送到我们的 API 以进行身份验证
这是我不太清楚的地方....我如何在我的服务器上验证 facebook 凭据?
截至目前,我只是在我的数据库中检查已收到 fb_uid 和 fb_email 的现有用户,但任何人都可以获得任何人的 fb_uid,并且找到他们用来注册 facebook 的电子邮件并不难,这意味着假设有人可以使用伪造的 http 请求轻松侵入另一个用户帐户。
最佳答案
如果有效,access_token
将允许您访问您的应用已请求访问权限的部分用户 Facebook 数据。验证您收到的凭据是否正确的一种方法是使用该 access_token
查询 Facebook。
例如,this page suggests how to open up the access_token
properties使用 GET
调用:
GET graph.facebook.com/debug_token?
input_token={token-to-inspect}
&access_token={app-token-or-admin-token}
然后返回:
{
"data": {
"app_id": 138483919580948,
"application": "Social Cafe",
"expires_at": 1352419328,
"is_valid": true,
"issued_at": 1347235328,
"metadata": {
"sso": "iphone-safari"
},
"scopes": [
"email",
"publish_actions"
],
"user_id": 1207059
}
}
关于android - 在我自己的 REST API 上验证从 Facebook 收到的凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17667505/