imc*_*mcc 45 objective-c facebook-ios-sdk facebook-ios-sdk-4.0
我正在将我的应用程序升级到Facebook-iOS-SDK-4.0,但似乎我无法收到用户的电子邮件FBSDKProfile,因为它只提供,用户名,用户ID等.
小智 129
要获取电子邮件,您需要使用图形API,特别是提供填充了所需字段的参数字段.看看Facebook的Graph API探索工具,它可以帮助找出查询. https://developers.facebook.com/tools/explorer
我能够获取电子邮件的代码如下,假设您已经登录:
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);
}];
Run Code Online (Sandbox Code Playgroud)
小智 28
那是对的.电子邮件地址不存在于FBSDKProfile对象中.您应该使用FB的Graph API.FB Developer网站上提供了大量信息和代码示例https://developers.facebook.com/docs/ios/graph
要回答你的问题,请尝试这样的事情.
if ([FBSDKAccessToken currentAccessToken]) {
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"email"}]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error) {
NSLog(@"user:%@", result);
}
}];
}
Run Code Online (Sandbox Code Playgroud)
代码更正:
if ([FBSDKAccessToken currentAccessToken]) {
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id result, NSError *error) {
if (!error) {
NSLog(@"fetched user:%@", result);
}
}];
}
Run Code Online (Sandbox Code Playgroud)
试试这个代码:
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
// Process error
} else if (result.isCancelled) {
// Handle cancellations
} else {
// If you ask for multiple permissions at once, you
// should check if specific permissions missing
if ([result.grantedPermissions containsObject:@"email"]) {
if ([FBSDKAccessToken currentAccessToken]) {
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error) {
NSLog(@"fetched user:%@", result);
}
}];
}
}
}
}];
Run Code Online (Sandbox Code Playgroud)