代码之家  ›  专栏  ›  技术社区  ›  Ian Warner

如何从Facebook画布认证中获得最佳性能

  •  2
  • Ian Warner  · 技术社区  · 15 年前

    在画布登录时需要执行以下操作的Facebook文档

    1. 包括Facebook库
    2. 用app id和secret实例化类
    3. 检查用户是否具有有效会话

      如果他们也检查您是否可以通过执行api调用/me获得用户对象

      如果他们不处理登录重定向

    所有这一切,尤其是Facebook的电话处理需要相当长的时间

    这个例子以代码的形式显示了这一点。 http://github.com/facebook/php-sdk/blob/master/examples/example.php

    从我读到的内容来看,每一页都需要这样做。因为用户可以在会话期间注销/删除应用程序/更改权限等

    我的问题是,从性能提升的角度来看,实现上述目标的理想方式是什么,但仍然要确保它符合Facebook的标准。

    Facebook确实给出了一个会话的到期时间,似乎是在格林尼治标准时间。

    我使用Zend框架用PHP编写代码,但我认为上面的内容与所有语言都有关。

    谢谢你的帮助

    2 回复  |  直到 15 年前
        1
  •  1
  •   Warren Stevens    15 年前

    伊恩,把你的用户facebook凭证存储在用户相关的表格中(或其他任何表格)。

    Facebook用户ID 脸谱秘诀 FooBooKy令牌

    让它看起来像:

    $user->facebook_session_array();
    

    然后,当您想要重用它时,只需将它传递到您的API类中。您无法使OAuth进程(在身份验证时)运行得更快,因为它必须是实时的。

    把你从Facebook上带回的任何东西和所有东西都储存起来。在后台运行一些crons,要么将这些内容插入表中,要么将其标记在驱动器上。cron脚本应该能够处理潜在的速率限制。我写了一些,但facebook太慢了,我认为它毫无意义。

    Facebook速度慢……不要让你的应用等待它以任何方式你可以避免它。

        2
  •  0
  •   Mike Bretz    15 年前

    首先,如果你想使用这个用户的数据,你必须通过facebookapi授权一个用户。由于成功的身份验证,您的应用程序将收到访问令牌和过期时间。过期时间的值以秒表示,而不是以格林威治标准时间戳表示。

    您的应用程序有权在自己的会话处理中存储访问令牌并过期,例如,您需要访问令牌代表用户向Facebook API发出请求。使用expire-time值(以及您授权用户的时间),您可以在调用FBAPI方法之前检查访问标记的有效性…如果它过期了,你应该重新验证。

    您显然不需要在该用户的每个页面重新加载时重新验证。

    如果用户在Facebook上更改了某些内容(例如删除应用程序),那么对API的调用可能会失败,并出现“OAuthException”错误。您的应用程序应该知道这些错误,并适当地处理它们。

    推荐文章