2009-12-16 32 views
1

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

这里的用户流量:

  1. 用户进入我的网站首次
  2. 我送他们到m.facebook.com/tos.php?并通过我的API密钥和密码
  3. 在用户登录使用Facebook Connect
  4. 的Facebook它们返回到一个页面在我的网站,mysite的/登录-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的/权限,success.php

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

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

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

回答

1

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

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

步骤:1. 一旦用户登录您通过FB连接,显示欢迎信息 2.要求用户授予所有需要你的权限的应用程序与URL格式如下 http://www.facebook.com/连接/ prompt_permissions.php API_KEY = YOUAPIKEY & ext_perm = offline_access,read_stream,publish_stream &下一= HTTP:?//m.facebook.com/tos.php API_KEY = YOUAPIKEY & v = 1 &取消= CancelURL“>授予权限

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

希望这有助于

干杯 詹姆斯

0

我真的没有找到一个很好的解决这个问题。在我的情况下,我只是等到会话超时,当用户不得不第二次登录时,我可以捕获offline_access项。

相关问题