获得Facebook脱机访问权限后获取新会话密钥

获得Facebook脱机访问权限后获取新会话密钥,facebook,Facebook,我有一个移动应用程序,我正在使用Facebook connect。在用户授予扩展权限后,我无法获取脱机访问会话密钥 以下是用户流程: 用户第一次访问我的网站 我把它们发送到m.facebook.com/tos.php?并传递我的api密钥和密码 用户使用Facebook connect登录 Facebook将它们返回到我的网站mysite/login-success.php中的一个页面,查询字符串中有一个auth_标记 在mysite/login-success.php上,我实例化了FB api

我有一个移动应用程序,我正在使用Facebook connect。在用户授予扩展权限后,我无法获取脱机访问会话密钥

以下是用户流程:

  • 用户第一次访问我的网站
  • 我把它们发送到m.facebook.com/tos.php?并传递我的api密钥和密码
  • 用户使用Facebook connect登录
  • Facebook将它们返回到我的网站mysite/login-success.php中的一个页面,查询字符串中有一个auth_标记
  • 在mysite/login-success.php上,我实例化了FB api客户端,并检查是否已经为它们提供了脱机访问会话密钥:
    $facebook=newfacebook($appapikey,$appsecret)
  • 如果他们还没有提供离线访问,FB会给我一个临时会话密钥,我需要从用户那里获得离线访问权限,所以我将他们转发到www.facebook.com/connect/prompt\u permissions.php?并在查询字符串中传递脱机访问权限
  • 用户授权脱机访问并转发到mysite/permissions-success.php
  • 我遇到的问题是,在permissions-success.php上实例化API客户端之后,我拥有的会话密钥仍然是临时会话密钥,而不是新的脱机访问会话密钥

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


    有谁能解释一下如何使用Facebook api生成新的会话密钥,即使已经存在一个会话密钥(在我的例子中是临时会话密钥)?

    我正在为我的FB Connect应用程序使用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,读取流,发布流&下一步=http://m.facebook.com/tos.php?api_key=YOUAPIKEY&v=1&cancel=CancelURL“>授予权限

  • FB将向您的用户回拨一个新的身份验证令牌,您可以获得有效的离线评估密钥
  • 希望这有帮助

    干杯
    James

    我正在为我的FB-Connect应用程序使用javafb-API。我认为PHP的诀窍也是一样的

    诀窍在于,一旦用户获得许可,Facebook将自动再次登录用户,这样您就可以捕获脱机访问会话密钥,并将其存储在数据库中以备将来使用

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

  • FB将向您的用户回拨一个新的身份验证令牌,您可以获得有效的离线评估密钥
  • 希望这有帮助

    干杯
    詹姆斯:我真的没有找到解决这个问题的好办法。在我的例子中,我只是等待会话超时,当它超时时,用户必须再次登录,我可以捕获脱机访问密钥。

    我没有找到解决此问题的好方法。在我的例子中,我只是等待会话超时,当它超时时,用户必须再次登录,我可以捕获脱机访问密钥