2011-12-15 98 views
4

对于少数用户(可能不会那么少,考虑到我收到的相关邮件的数量)与OAUTH授权相关的访问令牌似乎立即失效。用户通过通常的授权过程被引导,他接受权限,他被重定向到包含访问令牌的正确页面,但是一旦我的应用程序尝试使用访问令牌来获取用户ID,就会收到错误相反:访问令牌立即失效

{"error":{"message":"Error validating access token: Session has expired at unix time 0. The current unix time is 1323939801.","type":"OAuthException"}} 

offline_access是权限的一部分。此外,用户无法删除授权或更改密码,因为这是在接受授权之后发生的。在我的应用程序流中,我已经尝试了几次重试,并且从收到的日志中可以看到错误始终是相同的:再次指导用户再次通过授权过程没有用,因为用户被重新导向到页面片段中的access_token。显然,用户解决此问题的唯一方法是从授权应用程序列表中删除应用程序,并重复执行相同的操作(除非在第n次重试时开始工作,并非所有用户在开始工作时都会回写)。

这可能是什么原因?

+0

遇到与Facebook iOS SDK相同的问题。在授权后立即获取带有offline_access标记的错误。一些令牌在一分钟后工作正常。 – 2012-01-09 14:47:56

回答

0

我似乎遇到了同样的问题,看到我的问题在这里:The session has been invalidated because the user has changed the password - >编辑:我不认为这是同样的事情,我发现rootcause这个,看到这个问题的答案。

而另一个相关的问题在这里:How can I remove all potentially cached tokens or session IDs on Android?

任何线索尚未..?

+0

不幸的是,它不断发生:非常令人沮丧。 – 2011-12-18 13:54:02

+0

我不知道你的代码,以及你在哪里得到这个错误信息。但只是为了分享我的经验:当询问offline_access时,似乎不同的facebook SDK会将session中的'expires'参数设置为不同的事物。我使用Android和iOS SDK,对于iOS'过期'获取日期4001-01-01,而在Android'过期'将被设置为0.这至少欺骗了我,使我必须纠正逻辑不要让我的应用程序认为会话已过期。也许它可以帮助别人...... :) – ylva 2011-12-19 16:44:28

0

离线访问被弃用,我不会再要求了。相反,在iOS SDK中,至少有一种更新方法。