是否有可靠的方法从facebook平台获得访问令牌错误?
我们的iOS/Android应用需要保存用户的Facebook会话。这很好,只是我们从Facebook得到的身份验证错误似乎不一致。
本质上,如果我们从facebook得到一个错误,我们想知道这是否需要用户重新认证,或者如果它是由于一个间歇性的错误(即他们是速率限制的某些原因)。
大多数facebook图形错误似乎在错误消息文本的正文中包含错误代码。有的没有
如
{"error":{"message":"验证访问令牌错误:会话无效,因为用户已注销。","type":"OAuthException"}}
不包含错误代码,因此检查此错误的唯一方法是对"message"进行字符串比较。这似乎是一种非常不可靠的检查错误的方法。
似乎几乎可以检查json字符串中的"type"变量是否表示"OAuthException",除了如果用户是速率限制,那么这将抛出OAuthException,但它不需要用户重新登录,它只需要他们等待一段时间并停止发布这么多。
我已经看到了这里列出的How-To: https://developers.facebook.com/blog/post/500,但这仍然存在一个问题,即如果我的游戏需要用户重新登录facebook,如果他们碰巧过于热衷于在自己的留言板上发布内容。
那么,有没有一种可靠的方法从facebook平台获取错误呢?
现在我能找到的最好的解决方案是解析消息字符串的错误代码,如果我没有找到任何然后重新解析字符串寻找特定的消息(如"错误验证访问令牌"),然后最后如果我不能确定错误是什么,只是恐慌和用户注销。
不幸的是,我还没有找到一个很好的方法来处理这个问题。到目前为止,我发现的最佳解决方案是查看错误是否为oautheexception,将错误消息与不需要重新身份验证的"可接受失败"白名单进行比较,但如果错误与此白名单上的任何错误都不匹配,我认为用户必须使用Facebook重新身份验证。
作为参考,我发现唯一可以被列入白名单的错误是"user is rate limited"错误。为了检测这一点,我检查错误消息是否包含子字符串"(#341)",这是此错误的错误代码(并不是说此错误是少数在错误消息体中包含错误代码的错误之一)。