【发布时间】:2010-12-27 08:49:16
【问题描述】:
我有一个与 Facebook Connect 配合使用的移动应用程序。在用户授予扩展权限后,我无法获取 offline_access 会话密钥。
这是用户流程:
- 用户第一次访问我的网站
- 我将它们发送到 m.facebook.com/tos.php?并传递我的 api 密钥和秘密
- 用户使用 Facebook 连接登录
- Facebook 将它们返回到我网站中的页面 mysite/login-success.php,查询字符串中带有 auth_token
- 在 mysite/login-success.php 上,我实例化了 FB api 客户端并检查我是否已经为他们提供了一个 offline_access 会话密钥:
$facebook = new Facebook($appapikey, $appsecret); - 如果他们还没有提供offline_access FB 给了我一个临时会话密钥,我需要从用户那里获得offline_access 权限,所以我将它们转发到www.facebook.com/connect/prompt_permissions.php?并在查询字符串中传递 offline_access。
- 用户授权offline_access并被转发到mysite/permissions-success.php
我遇到的问题是,在permissions-success.php 上实例化API 客户端后,我拥有的会话密钥仍然是临时会话密钥,而不是新的offline_access 会话密钥。
我发现获取offline_access 密钥的唯一方法是删除用户的所有cookie,然后让他们使用Facebook connect 再次登录。相当糟糕的用户体验。
任何人都可以阐明如何使用 Facebook api 生成一个新的会话密钥,即使一个已经存在(在我的情况下是一个临时会话密钥)?
【问题讨论】:
标签: facebook