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

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

> Init facebook. (使用插件功能)
>登录Facebook. (使用插件功能)(询问权限:’email user_birthday publish_stream offline_access’)
>使用返回给我的令牌来图api call / me.

第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

解决方法:

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

在iOS中,’expires’将被设置为远未来的日期(4001-01-01),而在Android’expires’将被设置为0.这使得我的比较(过期<今天)失败(I正在做一个日期解析到毫秒),并且会话总是“无效”. (然后在我的情况下,如果会话无效,我总是在注销,这使我的令牌在之后在浏览器中尝试时无效真实… doh ..)

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...