会话已失效,因为用户已更改密码

时间:2011-12-13 18:12:09

标签: android ios facebook cordova

为Android和iOS实施PhoneGap应用程序,该应用程序使用Facebook Connect和PhoneGap Facebook Connect插件(https://github.com/davejohnson/phonegap-plugin-facebook-connect)。几天前我开始遇到access_token的问题,但只在Android上,同样的情况在iOS上运行没有问题。一步一步是:

  1. Init facebook。 (使用插件功能)
  2. 登录Facebook。 (使用插件功能)(询问权限:'email user_birthday publish_stream offline_access')
  3. 使用返回给我的令牌来图api call / me。
  4. 步骤3返回错误,当我拿到调用的url并放入桌面浏览器时,它会给出错误“会话已失效,因为用户已更改密码”。

    沙盒应用/非沙盒应用没有任何区别。

    iOS中完全相同的步骤可以正常工作。

    我在SOF和facebook上看到了很多关于它的问题,但所有这些问题都指的是让用户再次进行身份验证流程,或者说问题在几天之后就解决了......是否有人可以确认这真的是一个facebook bug吗?还是有解决方案?或者可以解释为什么它适用于Android而不是iOS?也许它可能与我在iOS中不使用Facebook应用程序,但选择始终通过浏览器中的OAuth?

    感谢任何线索!

    编辑:

    找到其他相关问题,这似乎与我的原因相同。

    How can I remove all potentially cached tokens or session IDs on Android?

    Access token immediately invalidated

1 个答案:

答案 0 :(得分:1)

好吧,最后我发现我的问题的根本原因是Android和iOS facebook SDK以不同的方式处理offline_access,它们在会话对象的'expires'参数中设置的值。

在iOS中,'expires'将设置为远期的日期(4001-01-01),而在Android'expires'将设置为0.这使我的比较(过期<今天)失败(我正在做一个日期解析到毫秒),并且会话总是“无效”。

(然后在我的情况下,如果会话无效,我总是在注销,这使我的令牌在之后在浏览器中尝试时无效真实... doh ..)