2015-04-06 27 views
3

我正在研究一個需要Facebook Login.I的ios應用程序,它已成功實現登錄過程。但現在我無法找到如何以及在哪裏可以獲得用戶個人資料信息,如名字,姓氏,個人資料圖片等...我的應用程序有權訪問名字,姓氏,個人資料圖片和電子郵件。獲取facebook在ios應用程序中的公開個人資料

+0

https://developers.facebook.com/docs/ios/graph – 2016-10-04 10:45:10

回答

14

下面是獲得人public_profile使用的代碼最新的Facebook SDK v4.0.1。您需要使用FBSDKProfile來獲取個人資料。

-(void)viewDidLoad{ 
     FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init]; 
     [self.view addSubview:loginButton]; 

     self.loginButton.readPermissions = @[@"public_profile", @"email", @"user_friends"]; 
     self.loginButton.delegate = self; 
     [FBSDKProfile enableUpdatesOnAccessTokenChange:YES]; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(profileUpdated:) name:FBSDKProfileDidChangeNotification object:nil]; 

     } 

    -(void)profileUpdated:(NSNotification *) notification{ 
     NSLog(@"User name: %@",[FBSDKProfile currentProfile].name); 
     NSLog(@"User ID: %@",[FBSDKProfile currentProfile].userID); 
    } 

    - (void) loginButton:(FBSDKLoginButton *)loginButton 
    didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result 
        error:(NSError *)error{ 

    } 

    - (void)loginButtonDidLogOut:(FBSDKLoginButton *)loginButton{ 

    } 
+0

此功能沒有得到所謂的在所有 - (空)loginButton:(FBSDKLoginButton *)loginButton didCompleteWithResult:(FBSDKLoginManagerLoginResult *)結果 錯誤:(NSError *)錯誤 – 2015-04-06 10:40:17

+0

請確保您在@interface .h文件中包含 2015-04-06 10:55:54

+0

是的,我已經包含它,但函數沒有被調用。 – 2015-04-06 11:11:54

-2

使用的通知方法,所以當它從Facebook它CA調用Facebook的委託方法

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(handleFBSessionStateChangeWithNotification:) 
               name:@"SessionStateChangeNotification" 
               object:nil]; 

後接收信息實施該方法

-(void)handleFBSessionStateChangeWithNotification:(NSNotification *)notification{ 
NSDictionary *userInfo = [notification userInfo]; 

FBSessionState sessionState = [[userInfo objectForKey:@"state"] integerValue]; 
NSError *error = [userInfo objectForKey:@"error"]; 
// Usually, the only interesting states are the opened session, the closed session and the failed login. 
if (!error) { 
    // In case that there's not any error, then check if the session opened or closed. 
    if (sessionState == FBSessionStateOpen) { 

     [FBRequestConnection startWithGraphPath:@"me" 
            parameters:@{@"fields": @"first_name, last_name, picture.type(normal), email"} 
            HTTPMethod:@"GET" 
           completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 
            if (!error) { 
             // Set the use full name. 
             NSLog(@"first name and last name is %@",[NSString stringWithFormat:@"%@ %@", 
                       [result objectForKey:@"first_name"], 
                       [result objectForKey:@"last_name"] 
                       ]); 
             NSString *firstName = [NSString stringWithFormat:@"%@",[result objectForKey:@"first_name"]]; 
             NSString *middleName = [NSString stringWithFormat:@"%@",[result objectForKey:@"middle_name"]]; 
             NSString *lastName = [NSString stringWithFormat:@"%@",[result objectForKey:@"last_name"]]; 
             NSString *email = [NSString stringWithFormat:@"%@",[result objectForKey:@"email"]]; 
             // Set the e-mail address. 
             NSLog(@"email is %@", [result objectForKey:@"email"]); 


            } 
            else{ 


             NSLog(@"%@", [error localizedDescription]); 
            } 
           }]; 


     // [self.btnToggleLoginState setTitle:@"Logout" forState:UIControlStateNormal]; 

    } 
    else if (sessionState == FBSessionStateClosed || sessionState == FBSessionStateClosedLoginFailed){ 
     // A session was closed or the login was failed. Update the UI accordingly. 
     // [self.btnToggleLoginState setTitle:@"Login" forState:UIControlStateNormal]; 
     // self.lblStatus.text = @"You are not logged in."; 



    } 
    } 
} 
相關問題