Я интегрирую свое приложение iOS с Parse и Facebook. Он отлично работает на моем iPhone 4s - работает под управлением iOS 6 - но когда я пытаюсь выполнить тестовую учетную запись на моем симуляторе xCode 5, это терпит неудачу.PFFacebookUtils logInWithPermissions не работает на тренажере
Когда я нажимаю мой логин с помощью кнопки facebook Я представил с высказыванием экрана: Вы уже утвержденной Test999 Это происходит сразу, когда я звоню эту строку (имя моего приложения.):
[PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error)
Я нажимаю ОК. Он отправляет меня на экран «Вы должны войти в систему первым». Я ввел свое имя пользователя и пароль и нажимаю «Вход в систему» - и я отправлен обратно в «Тебя уже уполномочил Test999». Я нажимаю OK - и мне представлен пустой вид с x в левом верхнем углу, чтобы закрыть его. Больше нечего делать, я нажимаю его, и меня отправляют обратно на экран «Вы должны войти первым».
Так что на самом деле нет способа войти в систему с симулятором. Я попытался «Сбросить содержимое и настройки», но это не поможет.
После ответа на подобную проблему я попытался добавить метод reconnectWithFb (ниже), а также обновил свой sdk Facebook до версии 3.9. Ничто не помогает.
Это из моего входа в систему с методом facebook:
[PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error) {
if (!user) {
if (!error) {
NSLog(@"Uh oh. The user cancelled the Facebook login.");
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"User cancelled facebook login" message:@"Uh oh. The user cancelled the Facebook login." delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Dismiss", nil];
[alert show];
} else {
NSLog(@"welcome screen loginWithFB: Uh oh. An error occurred: %@", error);
[self performSelector:@selector(reconnectWithFB) withObject:nil afterDelay:0.5];
}
} else if (user.isNew) {
NSLog(@"New user with facebook signed up and logged in!");
} else {
NSLog(@"User with facebook logged in!");
FBRequest *request = [FBRequest requestForMe];
[request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (!error) {
NSString *facebookUsername = [result objectForKey:@"name"];
[PFUser currentUser].username = facebookUsername;
[[PFUser currentUser] setObject:[result objectForKey:@"id"] forKey:@"facebookid"];
[[PFUser currentUser] saveEventually];
[[NSNotificationCenter defaultCenter] postNotificationName:kUsersToWatchNotification object:result];
} else {
NSLog(@"Error getting the FB username %@", [error description]);
}
}];
}
и мой reconnectWithFB (который на тренажере всегда пустой fbAccounts массив :)
-(void) reconnectWithFB {
NSLog(@"reconnectWithFB called");
ACAccountStore *accountStore;
ACAccountType *accountTypeFB;
if ((accountStore = [[ACAccountStore alloc] init]) && (accountTypeFB = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook])){
NSArray *fbAccounts = [accountStore accountsWithAccountType:accountTypeFB];
NSLog(@"fbAccounts %@", fbAccounts);
id account;
if (fbAccounts && [fbAccounts count] > 0 && (account = [fbAccounts objectAtIndex:0])){
[accountStore renewCredentialsForAccount:account completion:^(ACAccountCredentialRenewResult renewResult, NSError *error) {
//we don't actually need to inspect renewResult or error.
if (error){
NSLog(@"error in reconnectWithFB %@", error);
}
}];
}
}
}
Любая помощь с этим было бы значительно оценили.
Важно "STUPID TIP" !!! Если у вас есть приложение, установленное на ** quit-on-exit ** ... это обычно бывает при разработке ... конечно, ничего не получится! Потраченные часы на это, хе-хе! Надеюсь, это поможет кому-то. – Fattie