为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 ..)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。