Facebook OAuth 2.0 "code"和 "token"

标签 facebook oauth-2.0 facebook-authentication

为什么您在 Facebook OAuth2 身份验证流程中需要“代码”和“ token ”,如下所述:https://developers.facebook.com/docs/authentication/

如果您查看 OAuth 对话框引用 (https://developers.facebook.com/docs/reference/dialogs/oauth/),您似乎只使用 token 来获取有关用户的信息,并且如果您将 response_type 参数指定为 tokencode,token,那么你在第一时间就拿到了token。

为什么要先获取“密码”,然后用密码获取“token”,而不是直接获取token?

我想我误解了一些关于 OAuth 工作原理的基本知识,但如果您获得 token ,您似乎完全避免了对 https://graph.facebook.com/oauth/access_token 的请求第一次使用对话框。

最佳答案

让我们举一个简单的例子来区分身份验证代码和访问 token 。

作为用户,您想要试用一款名为 Highjack 的新 Facebook 应用程序。 因此,您单击该应用程序,Highjack 应用程序会要求您登录您的 Facebook 帐户。完成后,Facebook 会为您生成验证码。

此代码随后被传递到 Highjack 服务器,该服务器使用自己的 FB 客户端 ID、FB 密码和您的身份验证代码来获取访问 token 。

在上面的示例中,身份验证代码确认您作为用户是有效的 FB 用户。但是第二步说“作为 FB 用户,您正在授予对某些资源的 Highjack 应用程序的访问权限”。

如果 Highjack 应用程序需要隐式授权(即直接访问 token ),那么您也可以看到访问 token ,因为它正在与浏览器交换。这意味着您现在可以使用访问 token 代表 Highjack 调用所有 Facebook API。 (您只能使用访问 token 来获取您的个人信息,但 Facebook 无法知道谁在调用他们的 API。)

因为我们有 2 方(您和 Highjack)通过 Facebook 进行身份验证,所以我们有这种双重机制。

关于Facebook OAuth 2.0 "code"和 "token",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8666316/

相关文章:

javascript - 无法从 Facebook 获取登录状态

facebook - Facebook Like 后如何使用 Jasmine 测试 Google Analytics 调用

javascript - 使用 Open Graph API 在 Facebook 上共享全景 (360°) 图像时出现问题

iphone - Facebook 访问 token - 测试强制过期

access-token - 请求 oauth2 访问 token 时获取无效范围

facebook - 用户在 Facebook Auth Dialogue Javascript SDK 中跳过权限

facebook - FB Local Payment error : "Can' t parse open graph object. Property price doesn't exist for item”

spring - 在 “OAUTH2” 启用的启动应用程序中禁用身份验证

oauth-2.0 - 您是否为 OAuth 2.0 请求生成后端或前端状态参数?

django - Facebook 社交身份验证登录 : Can't Load URL: The domain of this URL isn't included in the app's domains