How to fetch user's email using Facebook?

前端 未结 2 1352
名媛妹妹
名媛妹妹 2020-12-07 05:08

I am new to iOS. I am able to fetch first_name,last_name of user(Facebook) using loginViewFetchedUserInfo method of FBLoginView<

相关标签:
2条回答
  • 2020-12-07 05:43

    try this..

    if(FBSession.activeSession.isOpen) {
    
           [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection,
                                                               id<FBGraphUser> user,
                                                               NSError *error) {
            if (!error) {
                           NSString *email = [user objectForKey:@"email"];
                        }
       }];
    }
    
    0 讨论(0)
  • 2020-12-07 05:46

    for new code facebook SDK ver 4.0 and above

    see this link

    below

     //  use facebook SDK 3.8 
    

    add the following methods in AppDelegate.m

     -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:  (NSString *)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:.
    }
    

    se the follwing code in your 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:(NSString *)message
           result:(id)result
            error:(NSError *)error;
    
    @end
    

    // apply the below code to your view 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=[NSString stringWithFormat:@"%@",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 & above

    Create a dictionary :

    class ViewController: UIViewController {
        var dict : NSDictionary!
    }
    

    Fetching the data :

    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 String)
            }
        })
    }
    

    Output should be :

    {
        email = "karthik.saral@gmail.com";
        "first_name" = Karthi;
        id = 924483474253864;
        "last_name" = keyan;
        name = "karthi keyan";
        picture =     {
            data =         {
                "is_silhouette" = 0;
                url = "XXXXXXX";
            };
        };
    }
    
    0 讨论(0)
提交回复
热议问题