com.facebook.sdk错误2使用Parse的iOS应用程序

时间:2013-07-26 16:48:07

标签: ios objective-c core-data parse-platform facebook-sdk-3.0

在我的iOS应用中,我们让用户使用Facebook登录以获取他们的一些信息。我已经包含了下面的代码,当用户按下“使用Facebook登录”按钮时发生:

- (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或类似的东西。另一件事,我的互联网连接似乎很好。我没有其他任何问题。

有谁知道这个问题的解决方案?感谢

2 个答案:

答案 0 :(得分:1)

您必须确保在您的Facebook应用ID中启用了沙盒。

答案 1 :(得分:0)

转到Facebook上的应用,然后检查是否有带有以下文字的橙色图标此应用程序处于沙盒模式。 在这种情况下,您需要做的是使用具有开发权限的开发人员组中的电子邮件来测试登录功能。

在其他情况下,单击“编辑应用程序”,然后添加您在xcode项目中使用的bundleId。要查看它,您可以转到.plist文件或添加以下代码以在控制台上打印它。

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