5

を使用して、ユーザーの 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;}
4

2 に答える 2