【问题标题】:How does facebook identify the user who is making the requests in the oAuth flowfacebook 如何识别在 oAuth 流程中发出请求的用户
【发布时间】:2012-11-30 03:43:55
【问题描述】:

关于 facebook 中的 oAuth 流程,我想了解一些内容。

我有一个 Facebook 应用程序。

当我直接访问我的应用程序站点时(不是通过 facebook),即在地址栏中输入我的应用程序站点 URL,我会访问我的应用程序。假设:https://myApp.com/fbApp

在服务器端有 oAuth 流程(发送对“code”参数的请求,然后使用“code”参数发送对“用户访问令牌”的另一个请求)。

我想知道 Facebook 如何知道发出“code”参数请求的用户是谁。 我注意到,当我登录 facebook 并直接访问我的网站(如上所述)时,我得到了“用户访问令牌”。

当第一次向 facebook 请求“code”参数时,他们的其他东西是否在幕后传输?

【问题讨论】:

  • 你用的是哪个sdk? (js、php 等)在 js 上,如果您第一次输入(询问权限)或没有活动会话(登录 Facebook),只需打开一个弹出窗口。然后,如果您有一个活动会话,它可以要求 facebook 获取活动会话的访问令牌。

标签: asp.net facebook facebook-graph-api


【解决方案1】:

是的,当向 Facebook 发出第一个重定向请求以获取代码参数时,用于将您转发到 Facebook 的 URI 包含一个客户端 ID(请参阅https://github.com/jcleblanc/oauth/blob/master/oauth2-php-facebook/index.php 第 7 行)。此客户端 ID 指的是站点开发人员在 https://developers.facebook.com/apps 为其站点创建的应用程序。

获取code参数后,站点向Facebook发送HTTP POST请求,以交换code获取访问令牌。在此请求中,客户端 ID 和客户端密码都被传输(参见https://github.com/jcleblanc/oauth/blob/master/oauth2-php-facebook/complete.php 第 10 行)。这两个密钥,客户端 ID 和客户端密码,是直接引用创建的应用程序的密钥。

希望对你有帮助 乔恩

【讨论】:

  • 嗨乔恩,谢谢你的回答。我知道有两个不同的访问令牌:“用户访问令牌”和“应用程序访问令牌”。 “应用访问令牌”永远不会更改,但“用户访问令牌”会随时间而变化(最长为 60 天)。当我请求“代码”参数时,我确实使用了“客户端 ID”,但是使用该参数的这个调用是为使用该应用程序的每个用户进行的,对吗?创建应用程序后,我从 facebook 获取了参数“client id”,所以这个参数对所有用户都是通用的,对吧?除非我遗漏了什么)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2016-09-18
  • 2011-12-30
  • 2023-03-11
  • 2014-09-01
  • 1970-01-01
相关资源
最近更新 更多