如何处理" ACAccountCredentialRenewResultRejected"调用renewCredentialsForAccount时的消息

时间:2013-06-20 19:15:57

标签: ios facebook ios6 acaccount acaccountstore

我创建ACAccountStore,访问用户的Facebook帐户,将帐户存储在ACAccount对象中,并且能够从凭据中检索令牌。但是,当我尝试使用此令牌从Facebook检索信息时,它将不会进行身份验证,并且尝试使用renewCredentialsForAccount续订凭据只会产生ACAccountCredentialRenewResultRejected的响应。

我无法通过任何简单的方式再次显示权限弹出窗口来请求权限。我可以再次请求权限的唯一方法是更改​​我在应用程序中要求的权限,或删除并重新添加我的Facebook帐户。

此时如何获取有效的身份验证令牌?

1 个答案:

答案 0 :(得分:3)

由于没有接受的答案我试着回复我发现的内容。在上面的评论之后,我阅读了有关 renewCredentialsForAccount 的文档,其中写着“如果用户已经取消了您的应用程序,则此续订请求将返回ACAccountCredentialRenewResultRejected。”

什么是误导,不是拒绝Facebook的用户。

我想我现在理解这个概念,并且我试图回答那些像我一样对这个问题失败的人。事实上,我没有意识到,当我收到 ACAccountCredentialRenewResultRejected 结果时,我的FB令牌将完全重置。这就是谜题中的关键因素。

所以你需要为不同的结果做些什么:

  • ACAccountCredentialRenewResultRenewed 你很高兴你有一个新的令牌。使用此续订令牌继续执行SLRequest。
  • ACAccountCredentialRenewResultRejected 您的令牌已重置,如果您尝试获取该令牌,则 nil 。您必须从头开始请求用户的权限并“安装”Facebook的应用程序。这意味着您首先要求通常的“电子邮件+其他读取权限”和(如果您需要)在单独的请求中请求写入权限。 (如果我想上传照片,有人可以解释为什么Facebook要我打扰用户两次)
  • ACAccountCredentialRenewResultFailed :我无法重现这一点。我相信你在这里向用户发送错误信息。

这就是我想出的。这是一个非常讨厌的API,文档很差,缺少样本。互联网上的例子也是关于“成功”的,他们并不关心用户可以撤销应用程序之外的权限这一事实。我一直在尝试和失败的开发模式。松散的白发,但走到了尽头。我希望我的回答可以帮助别人。