12
votes

Récupérer les détails de l'utilisateur de Facebook dans iOS

Je suis nouveau au développement de l'iPhone. Je fais une application où l'utilisateur a 2 login via Facebook, une fois qu'il soumet ses informations d'identification et clique sur le bouton Connexion, je dois chercher des détails tels que le prénom, le courrier électronique et le sexe de Facebook et après la récupération de l'utilisateur doit être dirigé. à la page d'inscription de l'application avec les détails remplis et j'ai besoin de cette application pour être compatible pour iPhone 4,4S et 5.

J'ai essayé de faire cela à l'aide de l'API de graphique Facebook mais je ne pouvais donc pas l'obtenir, alors tout le monde peut m'aider.

Merci d'avance.


1 commentaires

Bienvenue à cela. Vous devez poster ce que vous avez essayé. Nous tenterons de vous aider, mais seulement après avoir montré que vous avez mis au moins un effort.


7 Réponses :



1
votes

Utilisez l'API FBConnect pour récupérer des informations utilisateur. Il est facile à utiliser

API FBConnect

J'espère que cela fonctionne pour vous :)


0 commentaires

1
votes

Vous devez utiliser un chemin graphique pour obtenir des informations utilisateur.

-(void)getEmailId
{ 
 [facebook requestWithGraphPath:@"me" andDelegate:self];
}

- (void)openSession
{
 if (internetActive) {
  NSArray *permissions=[NSArray arrayWithObjects:@"read_stream",@"email",nil];

  [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES completionHandler:
   ^(FBSession *session,
   FBSessionState state, NSError *error) {
   [self sessionStateChanged:session state:state error:error];
  }];
 }else
 {
  UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"" message:@"Internet Not Connected" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
  [alert show];
 }
}

#pragma mark- request delegate methods 

- (void)request:(FBRequest *)request didLoad:(id)result
{
  NSLog(@"request did load successfully....");

//  __block NSDictionary *dictionary=[[NSDictionary alloc] init];

 if ([result isKindOfClass:[NSDictionary class]]) {
  NSDictionary* json = result;

  NSLog(@"email id is %@",[json valueForKey:@"email"]);
  NSLog(@"json is %@",json);

  [[NSUserDefaults standardUserDefaults] setValue:[json valueForKey:@"email"] forKey:@"fbemail"];
  [self.viewController login:YES];
 }
}

- (void)request:(FBRequest *)request didFailWithError:(NSError *)error
{
 UIAlertView *alertView=[[UIAlertView alloc] initWithTitle:@"" message:@"Server not responding.." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];

 [alertView show];

 [self fblogout];
 [self showLoginView];
 NSLog(@"request did fail with error");
}


- (void)sessionStateChanged:(FBSession *)session
                      state:(FBSessionState) state
                      error:(NSError *)error
{
 switch (state) {
  case FBSessionStateOpen: {
      //state open action
  }

   // Initiate a Facebook instance
   facebook = [[Facebook alloc]
                    initWithAppId:FBSession.activeSession.appID
                    andDelegate:nil];

   // Store the Facebook session information
   facebook.accessToken = FBSession.activeSession.accessToken;
   facebook.expirationDate = FBSession.activeSession.expirationDate;

   if (![[NSUserDefaults standardUserDefaults] valueForKey:@"fbemail"]) {
    [MBProgressHUD showHUDAddedTo:self.viewController.view animated:YES];
    [self getEmailId];
   }

   break;
  case FBSessionStateClosed:
  case FBSessionStateClosedLoginFailed:
   // Once the user has logged in, we want them to
   // be looking at the root view.
   [self.navController popToRootViewControllerAnimated:NO];

   [FBSession.activeSession closeAndClearTokenInformation];
   facebook = nil;

   [self showLoginView];
   break;
  default:
   break;
 }

 [[NSNotificationCenter defaultCenter]
  postNotificationName:FBSessionStateChangedNotification
  object:session];

 if (error) {
  UIAlertView *alertView = [[UIAlertView alloc]
                            initWithTitle:@"Error"
                            message:error.localizedDescription
                            delegate:nil
                            cancelButtonTitle:@"OK"
                            otherButtonTitles:nil];
  [alertView show];
 }
}


0 commentaires

18
votes

Vous pouvez le faire en utilisant le code suivant: xxx pré>

et n'a pas oublié d'importer facebooksdk / facebooksdk.h code> dans votre code. P>

EDIT: Mise à jour pour Facebook SDK V4 (23 avril, 2015) strong> P>

Maintenant, Faceboook a publié une nouvelle SDK avec des modifications majeures. Dans lequel la classe de fabession est obsolète. Tous les utilisateurs sont donc suggéré de migrer vers de nouveaux SDK et API. p>

ci-dessous j'ai mentionné, comment nous pouvons obtenir des informations sur les utilisateurs via Facebook SDK V4: P>

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


4 commentaires

Comment obtenir le numéro de téléphone utilisateur?


Il est toujours aléatoire dans FLBSessionStatecloseLoginFaillée ... pourquoi ...?


@Ramaniashishish: Cela peut être dû au problème de permission. Pour compléter l'intégration de Facebook, nous devons avoir une application de travail dans le développeur FB. Lorsque nous essayons d'utiliser les détails du compte utilisateur, il doit fournir la permission d'accéder à ses détails. Assurez-vous que toutes ces choses se passent parfaitement. Cela devrait fonctionner comme son travail pour beaucoup d'autres, y compris moi :)


Utilisez / moi et remplissez les paramètres classé avec {@ "champs": @ "ID, nom, e-mail"} .



1
votes
FBRequest *request = [FBRequest requestForMe];
[request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
    if (!error) {
        // handle successful response
    } else if ([error.userInfo[FBErrorParsedJSONResponseKey][@"body"][@"error"][@"type"] isEqualToString:@"OAuthException"]) { // Since the request failed, we can check if it was due to an invalid session
        NSLog(@"The facebook session was invalidated");
        [self logoutButtonTouchHandler:nil];
    } else {
        NSLog(@"Some other error: %@", error);
    }
}];

0 commentaires

3
votes

Ajouter info.Plist Fichier:

 Entrez la description de l'image ici xxx


0 commentaires

0
votes

Facebook a actuellement mis à jour sa version SDK à 4.x. Pour chercher des informations de profil de l'utilisateur, vous devez expliquer explicitement l'API de graphique après le succès de la connexion ( Demander des autorisations requises forte>).

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/me"
           parameters:@{ @"fields": @"id,name,email"}
           HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];


0 commentaires