2015-09-15 1 views
0
-(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user ////////////////////////////// fetch logged in user information 
{ 
    if (FBSession.activeSession.isOpen) { 

     [[FBRequest requestForMe] startWithCompletionHandler: 
     ^(FBRequestConnection *connection, 
      NSDictionary<FBGraphUser> *user, 
      NSError *error) { 
      if (!error) { 
       NSString *firstName = user.first_name; 
       NSString *lastName = user.last_name; 
       NSString *facebookId = user.id; 
       NSString *email = [user objectForKey:@"email"]; 
       NSString *imageUrl = [[NSString alloc] initWithFormat: @"http://graph.facebook.com/%@/picture?type=large", facebookId]; 
       NSLog(@" f0000000 %@",imageUrl); 
        NSLog(@" email ===== %@",email); 
      } 
     }]; 
    } 



    NSString *email_id= [user objectForKey:@"email"]; 
    NSLog(@" fetch yo ----->%@",user.name); ///// 

    NSLog(@" object ----->%@",email_id); 


} 

OutPut ------------ne peut pas chercher email de facebook, null ios.Get toujours

f0000000 http://graph.facebook.com/******/picture?type=large 
email ===== (null) 

f0000000 http://graph.facebook.com/*****/picture?type=large 
email ===== (null) 

Je reçois email null.How puis-je obtenir de l'email utilisateur, ou utilisateur actuellement connecté. Je suis nouveau à ios et n'ai aucune idée quoi faire plus.

Répondre

1

Je devrais vraiment juste expliquer au lieu de publier un tas de code, mais parfois voir le code est la meilleure façon d'apprendre comment tout fonctionne ensemble. Voici comment je fais connexion Facebook dans mes applications:

// FBSample logic 
// The user has initiated a login, so call the openSession method. 

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; 
[login logInWithReadPermissions:@[@"public_profile", @"email", @"user_friends"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) { 
if (error) { 
     // Process error 
     NSLog(@"ERROR SIGNING IN"); 
     [self loginFailed]; 
    } else if (result.isCancelled) { 
     // Handle cancellations 
     NSLog(@"login cancelled"); 
     [self loginFailed]; 
    } else { 
     NSLog(@"here 1"); 
     // If you ask for multiple permissions at once, you 
     // should check if specific permissions missing 
     if ([result.grantedPermissions containsObject:@"email"]) { 
      // Do work 
      NSLog(@"here 2"); 

      NSUserDefaults *fbstatus = [NSUserDefaults standardUserDefaults]; 
      [fbstatus setValue:@"NO" forKey:@"FBStatus"]; 
      [fbstatus synchronize]; 

      [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, first_name, last_name, gender, picture, email, birthday, about, address, age_range, bio, currency, devices, education, favorite_athletes, favorite_teams, hometown, inspirational_people, interested_in, location, political, sports, security_settings, relationship_status, quotes, timezone, website, work, cover, family, photos, videos, friendlists, groups, permissions"}] 
      startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
      { 

       if (!error) 
       { 
        NSLog(@"here 3"); 
        NSDictionary *userData = (NSDictionary *)result; 
        // userData contains your FBSDKGraphRequest results 
        // do whatever you need to do now that you have Facebook data 
       } else { 
        NSLog(@"ERROR GETTING FB DATA"); 
       } 

      }]; 
     } 
    }}]; 

Ce NSDictionary * userData contiendra toutes les informations Facebook que vous autorisations donné. J'espère que cela t'aides. Et ne faites pas que copier et coller, lisez-le pour comprendre comment cela fonctionne!

+0

Je suis désolé mais je n'ai pas compris. Je n'ai pas obtenu le dictionnaire userdata –

+0

Que n'avez-vous pas compris au sujet du dictionnaire userData? UserData NSDictionary contient les résultats de votre FBSDKGraphRequest, avez-vous vérifié la console pour que le NSLog s'assure que "here 3" est appelé? –

+0

Oui je l'ai vérifié dans la console. et j'ai collé le code dans l'utilisateur connecté –