Je suis nouveau sur iOS. Je suis capable de chercher last_name
, last_name
de l'user (Facebook) en utilisant la méthode FBLoginView
de FBLoginView
mais je veux savoir comment récupérer l'email, l'anniversaire et etc.
Voici mon code:
dans viewDidLoad
FBLoginView *loginview = [[FBLoginView alloc] init]; loginview.readPermissions=@[@"email"]; loginview.frame = CGRectOffset(loginview.frame, 5, 5); loginview.delegate = self; [self.view addSubview:loginview]; [loginview sizeToFit];
Après cela comment et où puis-je récupérer l'adresse e-mail de l'user?
J'ai traversé tellement de messages mais ils n'avaient aucun sens pour moi, alors aidez s'il vous plaît. Merci!
pour le nouveau code facebook SDK ver 4.0 et supérieur
voir ce lien
au dessous de
// use facebook SDK 3.8
ajoutez les methods suivantes dans AppDelegate.m
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication: (NSSsortingng *)sourceApplication annotation:(id)annotation { return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication fallbackHandler:^(FBAppCall *call) { NSLog(@"Facebook handler"); } ]; } - (void)applicationDidBecomeActive:(UIApplication *)application { [FBAppEvents activateApp]; [FBAppCall handleDidBecomeActive]; // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } - (void)applicationWillTerminate:(UIApplication *)application { [FBSession.activeSession close]; // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. }
Regardez le code suivant dans votre viewcontroler .h
#import <UIKit/UIKit.h> #import <FacebookSDK/FacebookSDK.h> #import <CoreLocation/CoreLocation.h> @interface ViewController : UIViewController<FBLoginViewDelegate> @property (strong, nonatomic) IBOutlet UILabel *lblUserName; @property (strong, nonatomic) IBOutlet UITextField *txtEmailId; @property (strong, nonatomic) IBOutlet UIButton *lblCreate; @property (strong, nonatomic) IBOutlet FBProfilePictureView *profilePic; @property (strong, nonatomic) id<FBGraphUser> loggedInUser; - (IBAction)butCreate:(id)sender; - (void)showAlert:(NSSsortingng *)message result:(id)result error:(NSError *)error; @end
// applique le code ci-dessous à votre vue controller.m
- (void)viewDidLoad { [super viewDidLoad]; FBLoginView *loginview=[[FBLoginView alloc]initWithReadPermissions:@[@"email",@"user_likes"]]; loginview.frame=CGRectMake(60, 50, 200, 50); loginview.delegate=self; [loginview sizeToFit]; [self.view addSubview:loginview]; } -(void)loginViewShowingLoggedInUser:(FBLoginView *)loginView { self.lblCreate.enabled=YES; self.txtEmailId.enabled=YES; self.lblUserName.enabled=YES; } -(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user { self.lblUserName.text=[NSSsortingng ssortingngWithFormat:@"%@",user.name]; self.txtEmailId.text=[user objectForKey:@"email"]; //self.profilePic.profileID=user.id; self.loggedInUser=user; } -(void)loginViewShowingLoggedOutUser:(FBLoginView *)loginView { self.txtEmailId.text=nil; self.lblUserName.text=nil; self.loggedInUser=nil; self.lblCreate.enabled=NO; } -(void)loginView:(FBLoginView *)loginView handleError:(NSError *)error{ NSLog(@"Show the Error ==%@",error); }
Swift 1.2 et plus
Créer un dictionary:
class ViewController: UIViewController { var dict : NSDictionary! }
Récupérer datatables:
if((FBSDKAccessToken.currentAccessToken()) != nil){ FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in if (error == nil){ self.dict = result as NSDictionary println(self.dict) NSLog(self.dict.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as Ssortingng) } }) }
La sortie devrait être:
{ email = "[email protected]"; "first_name" = Karthi; id = 924483474253864; "last_name" = keyan; name = "karthi keyan"; picture = { data = { "is_silhouette" = 0; url = "XXXXXXX"; }; }; }
essaye ça..
if(FBSession.activeSession.isOpen) { [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id<FBGraphUser> user, NSError *error) { if (!error) { NSSsortingng *email = [user objectForKey:@"email"]; } }]; }