在Facebook offline_access权限之后获取新的会话密钥

时间:2009-12-16 18:40:24

标签: facebook

我有一个移动应用程序,我正在使用Facebook连接。在用户授予扩展权限后,我无法获取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
  8. 我遇到的问题是,在permissions-success.php上实例化API客户端之后,我拥有的会话密钥仍然是临时会话密钥,而不是新的offline_access会话密钥。

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

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

2 个答案:

答案 0 :(得分: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. 希望这个帮助

    干杯 詹姆斯

答案 1 :(得分:0)

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