imcc imcc - 2 months ago 35
Objective-C Question

[Facebook-iOS-SDK 4.0]How to get user email address from FBSDKProfile

I'm upgrading my app to Facebook-iOS-SDK-4.0, but seems like I can't get user email from

FBSDKProfile
, since it only provide, username, userid, etc.

Answer

To fetch email you need to utilize the graph API, specifically providing the parameters field populated with the fields you want. Take a look at Facebook's Graph API explore tool, which can help to figure out the queries. https://developers.facebook.com/tools/explorer

The code that worked for me to fetch email is the following, which assumes you are already logged in:

    NSMutableDictionary* parameters = [NSMutableDictionary dictionary];
    [parameters setValue:@"id,name,email" forKey:@"fields"];

    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:parameters]
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                  id result, NSError *error) {
         aHandler(result, error);
     }];