【问题标题】:If REST applications are supposed to be stateless, how do facebook manages session for its api?如果 REST 应用程序应该是无状态的,那么 facebook 如何为其 api 管理会话?
【发布时间】:2013-04-30 13:35:10
【问题描述】:

我正在使用 PHP(Laravel 框架)开发一个 REST api。当我在玩facebook's GRAPH API EXPLORER 时,我注意到它使用了类似会话的机制。

当我退出并通过提供我的访问令牌尝试浏览器时,我收到以下错误。

现在我的意思是,除了访问令牌之外,facebook 正在使用这里的会话。我的问题是如何能够在REST Api 中使用会话,因为当我使用CURL 请求我的api 时,服务器会为每个请求生成新会话。

如果是的话,是否有任何黑客攻击,那么它是如何完成的?

【问题讨论】:

    标签: php facebook-graph-api oauth


    【解决方案1】:

    现在我的意思是,除了访问令牌之外,facebook 正在使用这里的会话

    其实graph api explorer如果省略它会自动追加access_token=blah_blah,所以它的会话实际上只基于access_token。您的 access_token 必须已过期。在这里调试:https://developers.facebook.com/tools/debug

    【讨论】:

    • 这正是我要问的问题,facebook 如何知道与访问令牌关联的用户已注销?在上面的示例中,我发布了我手动注销。让我们说,如果我只是关闭浏览器,facebook 将如何知道我已注销?请帮忙。
    • 我不确定我是否理解。当您手动注销时,客户端 Facebook 代码将重置您的会话并发送 access_token。如果您只是关闭浏览器,您并没有退出,您的会话仍然存储在 fb cookie 中,并且会在下一次恢复。
    • 好的 - 明白了。您从登录时开始使用 access_token ,但它不再起作用。那是因为当您注销时,Facebook 会使该令牌失效。为了防止在您的应用程序中发生这种情况,您必须将您获得的短期访问令牌与长期(ER)长期访问令牌交换。 developers.facebook.com/docs/howtos/login/extending-tokens
    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 2012-07-03
    • 2020-08-25
    • 2018-09-04
    • 1970-01-01
    • 2017-01-10
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多