1

我是 iOS 的新手,我想为我的应用程序登录 Facebook。

我对 facebook 的新 ios sdk 做了很多尝试。但我得到了错误。

代码是

-(IBAction)logIn:(id)sender;
{
    AppDelegate *appdelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    [appdelegate sessionOpener];
    FBRequest *me = [FBRequest requestForMe];
    [me startWithCompletionHandler: ^(FBRequestConnection *connection, 
                                      NSDictionary<FBGraphUser> *my,
                                      NSError *error) {
        NSLog(@"id %@", my.id);
        NSLog(@"name %@", my.first_name);


        greet.text = my.first_name;//this is a label to show the name
        user.userID = my.id;//this is a FBProfilePictureView to show 



    }];
    [UIView transitionFromView:self.view 
                        toView:userPage 
                      duration:0.5 
                       options:(UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionTransitionFlipFromLeft)
                    completion:NULL];    }
`
and sessionOpener is;


    -(void) sessionOpener{
    [FBSession sessionOpenWithPermissions:nil 
                        completionHandler:^(FBSession *session, 
                                            FBSessionState status, 
                                            NSError *error) {
                            // session might now be open.  
                        }];

}

现在我得到的错误是;当我在登录后第一次登录应用程序时返回 null 并且我收到 http 400 错误。

但是在我第二次运行应用程序时登录后,它会获取信息并打印我的名字。

我的模拟器 iphone 5.1 模拟器

4

1 回答 1

5

尝试创建会话对象并将其添加到请求中:

NSArray *permissions = [[NSArray alloc] initWithObjects:
                        @"email", 
                        @"publish_stream"
                        nil]; 
FBSession facebook_session = [[FBSession alloc] initWithPermissions:permissions];`

[[[FBRequest alloc] initWithSession:facebook_session graphPath:@"me"] startWithCompletionHandler:
 ^(FBRequestConnection *connection, 
   NSDictionary<FBGraphUser> *user, 
   NSError *error) {
     if (!error) {
         // get the data from user object
     }else {
         NSLog(@"Error: %@",error);
     }
 }];`
于 2012-07-26T18:06:12.497 回答