4

我和我的团队正在为 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 请求的用户帐户。

4

1 回答 1

2

access_token如果有效,将允许您访问您的应用已请求访问权限的一些用户 Facebook 数据。验证您收到的凭据是否正确的一种方法是使用它access_token来查询 Facebook。

例如,此页面建议如何使用调用打开access_token属性: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
    }
}
于 2013-07-31T14:10:16.740 回答