2015-04-22 86 views
1

我剛剛將我的Objective-C代碼升級到最新的Facebook SDK 4.0.1,我無法真正瞭解我在登錄序列中缺少的內容。 我完全按照指南和登錄確實爲我工作,但我唯一的問題是,我不知道如何才能對登錄做出反應。Objective-C Facebook登錄SDK 4.0.1

所以我想要做的是,只要Facebook登錄成功,我想獲取他的細節,現在由於某種原因,我無法找到如何去做。

我讀,我應該把下面的代碼在我viewDidLoad中:

if ([FBSDKAccessToken currentAccessToken]) { 
    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil] 
    startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
     if (!error) { 
      NSLog(@"fetched user:%@", result); 
     } 
    }]; 
} 

但是當Facebook登錄成功完成永遠不會被執行的代碼。

當我用我所用,以下面的代碼來獲取用戶的詳細信息,FBLoginView工作:

- (void)loginViewFetchedUserInfo:(FBSDKLoginManager *)loginView 
         user:(FBSDKProfile*)user { 
NSLog(@"User Details");} 

有沒有我可以使用新的SDK使用任何同等功能?

感謝您的幫助!


編輯:

我rezlied我可以使用的功能:

- (void) loginButton:(FBSDKLoginButton *)loginButton 
didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result 
       error:(NSError *)error{ 
    NSLog(@"LOGGED IN TO FACEBOOK"); 

} 

但我認爲我還應該添加一個委託到我的控制器,我不知道如何..任何幫助這個嗎?我在正確的方向嗎?

再次感謝!

回答

3

創建自定義的方法以獲得結果成

-(void)fetchUserInfo { 
    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil] 
    startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
     if (!error) { 
      NSLog(@"fetched user:%@", result); 
     } 
    }]; 
} 

你可以調用這個函數,如果登錄成功。

- (void) loginButton:(FBSDKLoginButton *)loginButton 
didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result 
       error:(NSError *)error{ 
    NSLog(@"LOGGED IN TO FACEBOOK"); 
    [self fetchUserInfo]; 
} 

和你viewDidLoad方法

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib 

    if ([FBSDKAccessToken currentAccessToken]) { 
     NSLog(@"Token is available"); 
     [self fetchUserInfo]; 
    } else { 
    FBSDKLoginButton *loginView = [[FBSDKLoginButton alloc] init]; 
    loginView.readPermissions = @[@"email"]; 
    loginView.frame = CGRectMake(100, 150, 100, 40); 
    loginView.delegate = self; 
    [self.view addSubview:loginView]; 
    } 
} 
+0

謝謝,這是我已經有的,我的主要問題是函數didCompleteWithResult沒有在用戶登錄成功後被調用。 –

+0

您是否將委派分配給LoginButton,如果是,請嘗試重置模擬器並再次嘗試安裝應用程序。 –

+0

是的,我做過了 - 問題出在Facebook SDK附帶的Bolt框架上,請參閱我的答案。 –