我和我的团队正在开发适用于Android的原生移动社交网络,允许用户使用Facebook登录。我已经设法实现了适用于Android的Facebook SDK,但我正在努力弄清楚如何正确/安全地验证使用Facebook登录的用户以及仅从Facebook收到的凭据。目前这是我的系统如何:
步骤1.从Android客户端,用户按下Facebook登录并授予我的应用权限。
步骤2.在用户授予我们的权限后,Facebook会向我们发送一个回复,其中包含用户fb用户ID,电子邮件和令牌(如果这是用户第一次使用Facebook登录,则会显示其他信息)
步骤3.将信息发送到我们的API进行身份验证
这就是我有点不清楚的地方....我如何验证服务器上的facebook凭据?
截至目前我只是在收到fb_uid和fb_email的现有用户检查我的数据库,但是任何人都可以获得任何人fb_uid并且找到他们用于注册Facebook的电子邮件并不是那么难,这意味着有人假设可以使用伪造的http请求轻松入侵其他用户帐户。
答案 0 :(得分:2)
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
}
}