2013-07-26 2 views
0

в моем приложении iOS, у нас есть наш пользовательский вход в систему, используя facebook, чтобы получить часть своей информации. Я включил ниже код, который происходит, когда пользователи нажимает на кнопку с надписью «Вход с использованием Вконтакте»:com.facebook.sdk ошибка 2 приложения iOS, используя Parse

- (IBAction)toQuadAction:(id)sender { 

// Query to fetch the users name and picture 
NSString *query = @"SELECT name, username FROM user WHERE uid=me() "; 

// Set up the query parameter 
NSDictionary *queryParam = [NSDictionary dictionaryWithObjectsAndKeys:query, @"q", nil]; 
// Make the API request that uses FQL 
[FBRequestConnection startWithGraphPath:@"/fql" parameters:queryParam HTTPMethod:@"GET" 
         completionHandler:^(FBRequestConnection *connection, 
              id result, 
              NSError *error) { 
          if (error) { 
           NSLog(@"Error: %@", [error localizedDescription]); 
          } else { 
           NSLog(@"My name: %@", result[@"data"][0][@"name"]); 
           NSLog(@"My username: %@", result[@"data"][0][@"username"]); 


           //SAVE TO CORE DATA 
           AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
           NSEntityDescription *user = [NSEntityDescription entityForName:@"User" inManagedObjectContext:appDelegate.managedObjectContext]; 
           NSFetchRequest *getName = [[NSFetchRequest alloc] init]; 
           [getName setReturnsObjectsAsFaults:NO]; 
           [getName setEntity:user]; 
           NSError *error; 
           NSMutableArray *currentUser = [[appDelegate.managedObjectContext executeFetchRequest:getName error:&error] mutableCopy]; 

           //SAVE THE NAME TO CORE DATA 
           [currentUser[0] setName:result[@"data"][0][@"name"]]; 


           //SAVE NAME AND PICTURE TO PARSE 
           PFQuery *query = [PFQuery queryWithClassName:@"Student"]; 
           [query whereKey:@"email" equalTo:[currentUser[0] valueForKey:@"email"]]; 
           [query getFirstObjectInBackgroundWithBlock:^(PFObject *users, NSError *error) { 
            if (!users){ 
             NSLog(@"The first object request failed"); 
            } else{ 
             NSLog(@"grabbed the object"); 
             //SET THE NAME IN PARSE 
             [users setObject:result[@"data"][0][@"name"] forKey:@"name"]; 
             //SET THE IMAGE IN PARSE 
             NSString *URLString = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture?width=235&height=385", result[@"data"][0][@"username"]]; 
             NSURL *picURL = [NSURL URLWithString:URLString]; 
             NSData *picData = [NSData dataWithContentsOfURL:picURL]; 
             PFFile *picture = [PFFile fileWithData:picData ]; 
             [users setObject:picture forKey:@"picture"]; 
             [users saveInBackground]; 
            } 
           }]; 
          } 
          [self performSegueWithIdentifier:@"facebookToQuad" sender:sender]; 
         }]; 
} 

Когда я делаю это с новым пользователем (в симуляторе IOS), который еще не разрешил мое приложение в Facebook, я получаю предупреждение, в котором говорится: «Операция не может быть завершена (ошибка com.facebook.sdk 2.)».

Я уже видел этот вопрос, но не нашел решения, которое мне подходит. Во-первых, я строю родной, не используя PhoneGap или что-то в этом роде. Другое дело, мое подключение к Интернету кажется прекрасным. У меня нет проблем с чем-то другим.

Кто-нибудь знает о решении этой проблемы? Спасибо

+0

убедитесь, что песочница отключена в fb id. –

+0

Выполнены ли все настройки обратного вызова URL-адреса приложения? – Wain

+0

У вас есть @Parser, спасибо. Задайте вопрос, чтобы я мог его принять. –

ответ

1

Вы должны убедиться, что песочница включена в вашем приложении Facebook.

0

Перейдите в приложение на facebook, а затем проверьте, есть ли оранжевая иконка со следующим текстом. Это приложение находится в режиме Sandbox. В этом случае вам нужно проверить функциональность входа в систему, используя электронную почту, которая находится в группе разработчиков с разрешениями разработки.

В другом случае нажмите «изменить приложение», а затем добавьте параметр bundleId, который вы используете в проекте xcode. чтобы увидеть его, вы можете перейти в файл .plist или добавить следующий код для его печати на консоли.

NSLog(@"%@",[[NSBundle mainBundle] bundleIdentifier]);