为什么您在 Facebook OAuth2 身份验证流程中需要“代码”和“ token ”,如下所述:https://developers.facebook.com/docs/authentication/ ?
如果您查看 OAuth 对话框引用 (https://developers.facebook.com/docs/reference/dialogs/oauth/),您似乎只使用 token 来获取有关用户的信息,并且如果您将 response_type
参数指定为 token
或code,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/