【问题标题】:Getting a new session key after Facebook offline_access permissionFacebook offline_access 权限后获取新的会话密钥
【发布时间】:2010-12-27 08:49:16
【问题描述】:

我有一个与 Facebook Connect 配合使用的移动应用程序。在用户授予扩展权限后,我无法获取 offline_access 会话密钥。

这是用户流程:

  1. 用户第一次访问我的网站
  2. 我将它们发送到 m.facebook.com/tos.php?并传递我的 api 密钥和秘密
  3. 用户使用 Facebook 连接登录
  4. Facebook 将它们返回到我网站中的页面 mysite/login-success.php,查询字符串中带有 auth_token
  5. 在 mysite/login-success.php 上,我实例化了 FB api 客户端并检查我是否已经为他们提供了一个 offline_access 会话密钥:
    $facebook = new Facebook($appapikey, $appsecret);
  6. 如果他们还没有提供offline_access FB 给了我一个临时会话密钥,我需要从用户那里获得offline_access 权限,所以我将它们转发到www.facebook.com/connect/prompt_permissions.php?并在查询字符串中传递 offline_access。
  7. 用户授权offline_access并被转发到mysite/permissions-success.php

我遇到的问题是,在permissions-success.php 上实例化API 客户端后,我拥有的会话密钥仍然是临时会话密钥,而不是新的offline_access 会话密钥。

我发现获取offline_access 密钥的唯一方法是删除用户的所有cookie,然后让他们使用Facebook connect 再次登录。相当糟糕的用户体验。

任何人都可以阐明如何使用 Facebook api 生成一个新的会话密钥,即使一个已经存在(在我的情况下是一个临时会话密钥)?

【问题讨论】:

    标签: facebook


    【解决方案1】:

    我正在为我的 FB Connect APP 使用 Java FB API。我认为 PHP 的诀窍是一样的。

    诀窍是在用户授予您权限后强制 Facebook 自动再次登录您的用户,以便您能够捕获离线访问会话密钥,并将其存储在您的数据库中以供将来使用。

    步骤: 1. 用户通过 FB Connect 登录后,显示欢迎信息 2. 要求用户为您的应用授予所有需要的权限,URL 格式如下 http://www.facebook.com/connect/prompt_permissions.php?api_key=YOUAPIKEY&ext_perm=offline_access,read_stream,publish_stream&next=http://m.facebook.com/tos.php?api_key=YOUAPIKEY&v=1&cancel=CancelURL">授予权限

    1. FB 将回调您的新身份验证令牌,您可以获得有效的离线评估密钥..

    希望有帮助

    干杯 詹姆斯

    【讨论】:

      【解决方案2】:

      我并没有真正找到解决这个问题的好方法。在我的情况下,我只是等到会话超时,当它超时时,用户必须第二次登录,我可以捕获 offline_access 密钥。

      【讨论】:

        猜你喜欢
        • 2011-02-27
        • 1970-01-01
        • 1970-01-01
        • 2010-12-28
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多