android - 在我自己的 REST API 上验证从 Facebook 收到的凭据

标签 android api oauth-2.0 facebook-php-sdk facebook-oauth

我和我的团队正在开发一个适用于 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/

相关文章:

android - 将 H.264 转换为适用于 Android 手机的 H.263

android - Gradle 配置缓存在本地计算机上有效,但在 GitHub Actions 上失败

java - 将数据加载到 fragment 中,然后在其他类中使用该数据

android - 具有背景颜色和行间距的 TextView

php - 使用 laravel 内置的 API 登录用户

python - 如何使用Google Oauth2 access_token?

oauth - AWS API Gateway - 将访问 token 与 Cognito 用户池授权方一起使用?

java - 尝试使用 Google Blogger API OAuth2 创建帖子时发生 SessionExpiredException

ruby-on-rails - 如何使用多行字符串示例比较 Cucumber 步骤中的 xml 输出?

laravel - 有没有办法在没有用户身份验证的情况下保护 Laravel 中的某些 API 路由?