【问题标题】:Facebook API: How to acquire access_token server-side and use it client-side?Facebook API:如何在服务器端获取 access_token 并在客户端使用它?
【发布时间】:2012-03-21 08:40:16
【问题描述】:

我正在构建一个 Rails 应用程序,它会定期抓取用户的图形 API 内容。我的第一种方法是完全在服务器端进行,使用 Omniauth 进行身份验证,使用 Koala 与服务器上的 Facebook 进行交互。我必须运行一个后台进程来做到这一点。

但是我意识到它可能会变得非常昂贵,并且正在考虑在服务器端和客户端都进行此操作的选项。我仍然需要做服务器端,因为即使用户不在网站上,我也需要填充内容,但至少当用户在网站上时,做所有轮询客户端更有意义。这样,我的服务器就不需要经常抓取 FB 服务器,因此成本保持较低,并且用户更快乐,因为当他们可以使用 FB javascript SDK 随时接收更新时

我不确定这是否可能。目前我知道如何完全在服务器端或完全在客户端做到这一点。但我不知道如何从服务器端获取 access_token 并在客户端使用该信息来让客户端完成大部分轮询。非常感谢您的建议。

【问题讨论】:

    标签: facebook facebook-graph-api omniauth koala


    【解决方案1】:

    “我正在构建一个定期抓取用户图形 API 内容的 Rails 应用程序。”不要只这样,成本太高。为用户实现 Graph API 的实时更新并存储信息。这样一来,当某些事情发生变化时,您会立即收到通知,而且您不必“浪费”对 API 的轮询调用,这些调用与上次调用相比没有返回任何新内容。然后,如果您想在客户端编写一个轮询器,轮询您的服务器端用户信息数据存储。

    【讨论】:

    • 感谢您的信息。我实际上花了几个小时阅读文件,这是我学到的新东西之一。但这仍然很棘手。自从昨晚问了这个问题以来,我已经设法实现了客户端轮询模块,它似乎工作正常,但我不知道这是如何工作的:(我想也许一旦用户使用 Omniauth 在服务器端进行了一次身份验证,它存储在 cookie 中,我不必担心客户端身份验证。
    • 其实我非常感谢您的评论,但我仍然没有得到我的答案。我不知道为什么这个问题被否决(也许这是一个新手问题?),但我仍然有这个问题。我现在解决这个问题的方法是,首先我使用 Koala gem 来处理服务器端抓取。但是对于客户端,我只是使用Facebook的js api,它使用当前登录Facebook的用户的Facebook会话,这意味着服务器端可能正在抓取用户A的内容,而客户端可能正在抓取正在使用计算机的人现在。不知道有没有办法解决这个问题?
    • 正如我在原始答案中指出的那样,抓取不是做到这一点的方法。使用 Graph API 的实时更新机制来获取即时更新。
    猜你喜欢
    • 1970-01-01
    • 2015-05-21
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多