を使用して、ユーザーの Facebook アカウント ID と名前を取得していますACAccountStore
。
ユーザーに許可を求めるアラートが表示され (「XYZ があなたのニュース フィードとプロファイルにアクセスしようとしています」)、ユーザーが [許可しない] をタップすると、エラー コード 7 が表示されますACErrorPermissionDenied
。
しかしその後、[設定] に移動してアプリの Facebook 設定をオンにし、アプリに戻ると、アラートが再びポップアップ表示され、ユーザーが [OK] をタップすると、エラー コード 7 ( ACErrorPermissionDenied
) が引き続き表示されます。設定で有効にして、アプリで [OK] をタップしましたが、それでもこのエラーが表示されます。
初めてアクセスを許可し、その後設定からアクセスをオンまたはオフに切り替えると、適切なエラーまたは成功が表示されます。この問題は、ユーザーが最初に「許可しない」をタップした場合にのみ発生します。要求されたときに彼がアプリでそれを許可しない場合、彼は私のアプリへの FB アクセスを許可できません。
次のコードを使用して、iOS 6.0 および 6.0.1 でこれをテストしました。
NSMutableArray *acAccountArray = [[NSMutableArray alloc] init];
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountType =
[accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
[accountStore
requestAccessToAccountsWithType:accountType
options:[self getOptionDictionary:ACAccountTypeIdentifierFacebook permission:[[NSArray alloc]initWithObjects:@"read_stream",@"user_about_me",@"email", nil]]
completion:^(BOOL granted, NSError *error) {
if(granted) {
// Doing what I want
} else {
NSLog(@"Error: %@", error);
}
}];
-(NSDictionary *)getOptionDictionary:(NSString * const)accountTypeIdentifier
permission:(NSArray*)permissionArray {
NSDictionary *options = nil;
if (accountTypeIdentifier == ACAccountTypeIdentifierFacebook) {
options = @{
@"ACFacebookAppIdKey" : @"dhksadhakjdhkshd",
@"ACFacebookPermissionsKey" : permissionArray,
@"ACFacebookAudienceKey" : ACFacebookAudienceFriends};
}
return options;}