当用户升级到iOS 7时,他们不得不重新授权他们的Twitter帐户。目前,我遇到的问题似乎是因为用户有多个帐户,其中一个或多个帐户未经过验证。
当用户有多个帐户,并且需要授权时,运行此方法将为完成处理程序提供YES,并且出现nil错误:
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
[accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error) {
}];
继续以后,该应用将无法从该帐户访问Twitter,并导致崩溃。
阅读文档显示ACAccount 具有 credential
属性,但this property is inaccessible after the account is saved
属性,因此无法用作指标。
ACAccountStore确实有另一种方法:
- (void)renewCredentialsForAccount:(ACAccount *)account completion:(ACAccountStoreCredentialRenewalHandler)completionHandler
但是这会强制用户在被叫时更新他们的凭据,如果他们已经拥有,则不是理想的。
如何确定帐户是否需要续订凭据,或者是否可以访问?
答案 0 :(得分:2)
如果用户帐户不同步,您应该续订用户帐户。如果用户更改了密码或帐户会话已过期,则可能会发生这种情况。
您可以使用以下通知知道: ACAccountStoreDidChangeNotification