ユーザーが iOS 7 にアップグレードしたとき、Twitter アカウントを再認証する必要がありました。現在、ユーザーが複数のアカウントを持っていて、そのうちの 1 つまたは複数が検証されていない場合に発生すると思われる問題があります。
ユーザーが複数のアカウントを持っていて、そのうちの 1 つに承認が必要な場合、このメソッドを実行すると、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
ただし、これにより、ユーザーは呼び出されたときに資格情報を更新する必要があり、既に持っている場合は理想的ではありません。
アカウントの資格情報の更新が必要かどうか、またはアカウントにアクセスできるかどうかを実際に確認するにはどうすればよいですか?