#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 в моем приложении.