2012-07-18 165 views
1

我是iOS新手,我想爲我的應用做一個Facebook登錄。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模擬器

回答

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); 
    } 
}];` 
+0

非常感謝亞歷克斯,這是正確的代碼 – Singh 2012-09-27 06:10:10

+0

高興它幫助developersaremad – Alex 2012-09-27 23:22:35