Не удается войти в Facebook с помощью Parse Objective C

#ios #objective-c #facebook #parse-platform

#iOS #objective-c #Facebook #parse-платформа

Вопрос:

Я использую Parse в своем приложении. Я пытаюсь войти в систему с помощью Facebook. Но я столкнулся с одной странной проблемой. Если я вхожу в учетную запись Facebook из настроек моего iPhone, я получаю следующую ошибку.

 Error Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. (com.facebook.sdk error 2.)" UserInfo=0x17560700 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginCancelled, com.facebook.sdk:ErrorInnerErrorKey=Error Domain=com.apple.accounts Code=7 "The operation couldn’t be completed. (com.apple.accounts error 7.)", com.facebook.sdk:ErrorSessionKey=<FBSession: 0x175227e0, state: FBSessionStateClosedLoginFailed, loginHandler: 0x0, appID: 638916992864352, urlSchemeSuffix: , tokenCachingStrategy:<PFFacebookTokenCachingStrategy: 0x175a9900>, expirationDate: (null), refreshDate: (null), attemptedRefreshDate: 0001-12-30 00:00:00  0000, permissions:(null)>}
  

Я выхожу из настроек iPhone -> Facebook, тогда все работает нормально.

Я провел исследование по этому вопросу, но не получил решений.

Кто-нибудь может помочь решить мою проблему?

Спасибо,

Комментарии:

1. здесь та же проблема, что вы делаете для ее решения?

Ответ №1:

Попробуйте использовать приведенный ниже код .. Вам нужно указать разрешения в коде, как в приведенном ниже коде..

 -(IBAction)facebookButtonAction:(id)sender
{
   if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
{

    self.accountStore = [[ACAccountStore alloc] init];


    // Create an account type that ensures Twitter accounts are retrieved.
    ACAccountType *accountType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
    NSArray * permissions = [NSArray arrayWithObjects:@"email",@"user_location",@"user_birthday", nil];
    NSDictionary * dict=[NSDictionary dictionaryWithObjectsAndKeys:@“xxxxxxxxxxxxxxx,ACFacebookAppIdKey,permissions,ACFacebookPermissionsKey,ACFacebookAudienceEveryone,ACFacebookAudienceKey, nil];

    [self.accountStore requestAccessToAccountsWithType:accountType options:dict completion:^(BOOL granted, NSError *error) {

        NSLog(@"-------------error =%@---------  check grant bol %d",error,granted);

        if(granted ) {
            NSArray *accountsArray = [self.accountStore accountsWithAccountType:accountType];

            if ([accountsArray count] > 0)
            {

                ACAccount *fbAccount = [accountsArray objectAtIndex:0];

                NSDictionary *tempDict = [[NSMutableDictionary alloc] initWithDictionary:[fbAccount dictionaryWithValuesForKeys:[NSArray arrayWithObject:@"properties"]]];

                NSString *facebookname;

                facebookname=@"Name not found";

                 facebookname = [[tempDict objectForKey:@"properties"] objectForKey:@"ACPropertyFullName"];

                if ([facebookname isKindOfClass:[NSNull class]] || facebookname==NULL || [facebookname isEqualToString:@""] || [facebookname isEqualToString:@"(null)"])
                {
                     facebookname = [[tempDict objectForKey:@"properties"] objectForKey:@"fullname"];
                }
                //if (SYSTEM_VERSION_LESS_THAN(@"7.0"))
                {

                }


                NSString *facebookID = [NSString stringWithFormat:@"%@", [[fbAccount valueForKey:@"properties"] valueForKey:@"uid"]] ;

                NSString *pictureURL=[NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?type=largeamp;return_ssl_resources=1",facebookID];

                NSLog(@" check the properties %@",tempDict);
               NSLog(@" name nemae %@",facebookname);
                 NSLog(@" facebookID %@",facebookID);
                NSLog(@" image  https://graph.facebook.com/%@/picture?type=largeamp;return_ssl_resources=1",facebookID);


                if ([facebookname isKindOfClass:[NSNull class]] || facebookname==NULL || [facebookname isEqualToString:@""] || [facebookname isEqualToString:@"(null)"])
                {
                    UIAlertView *somethingerr=[[UIAlertView alloc]initWithTitle:@“App Name” message:@"Something went wrong with facebook login. Please send your console report to the developers." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
                    [somethingerr show
                     ];

                    [self hidespinner];

                    return;
                }

            }

            else{
                UIAlertView *alerts=[[UIAlertView alloc]initWithTitle:@"No facebok account" message:@"Please add or create an account in "settings " " delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
                [alerts show];
                [self performSelector:@selector(hidespinner) withObject:nil afterDelay:0.1] ;

            }
        }

        else{

            switch ([error code])
            {
                case 0:
                    [self showErrorAlertWithMessage:@"Unknown error occured, try again later!"];
                    break;

                case 1:
                    [self showErrorAlertWithMessage:@"Unknown error occured, try again later!"];
                    break;
                case 3:
                    [self showErrorAlertWithMessage:@"Authentication failed, try again later!"];
                    break;
                case 6:
                    [self showErrorAlertWithMessage:@"Facebook account does not exists. Please create it in Settings and come back!"];
                    break;
                case 7:
                    [self showErrorAlertWithMessage:@"Permission request failed. You won't be able to share information to Facebook"];
                    break;
                default:
                    [self performSelector:@selector(hidespinner) withObject:Nil afterDelay:0.1];
                    break;
            }

        }

    }];


}
else{

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Facebook Accounts" message:@"There are no Facebook accounts configured. You can add or create a Facebook account in Settings." delegate:nil                                                       cancelButtonTitle:@"OK"  otherButtonTitles:nil];

    [alert show];
    [self performSelector:@selector(hidespinner) withObject:nil afterDelay:0.1] ;

}
}
  

Надеюсь, это поможет вам ….!

Комментарии:

1. Я отредактировал код .. Пожалуйста, проверьте его.. Я использовал parse.com в моем приложении.