ext*_*ner 5 objective-c facebook-graph-api ios facebook-ios-sdk xcode6
当我使用下面的代码获取用户的email-id时,我得到[null]值.此外,我已经设置了访问这样的电子邮件的权限.
{
self.fbLoginButton.readPermissions = @[@"public_profile", @"email", @"user_friends"];
}
Run Code Online (Sandbox Code Playgroud)
同时在委托中获取电子邮件详细信息.
- (void)loginButton:(FBSDKLoginButton *)loginButton
didCompleteWithResult: (FBSDKLoginManagerLoginResult *)result
error: (NSError *)error
{
if ([FBSDKAccessToken currentAccessToken])
{
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error) {
NSLog(@"fetched user:%@", result);
NSLog(@"fetched user:%@ and Email : %@", result,result[@"email"]);
}
}];
}
}
Run Code Online (Sandbox Code Playgroud)
请提供任何解决方案.
另外,我将FacebookSDK集成文档用于实现链接:https://developers.facebook.com/docs/facebook-login/ios#login-button
Dee*_*san 14
您可以尝试此代码.基于Facebook SDK 4.0版.与旧版本相比,它在4.0中进行了修改.
在 App delegate.m
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
Run Code Online (Sandbox Code Playgroud)
在viewController.m档案中
- (IBAction)btnFacebookPressed:(id)sender {
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 ([result.grantedPermissions containsObject:@"email"])
{
NSLog(@"result is:%@",result);
[self fetchUserInfo];
}
}
}];
}
-(void)fetchUserInfo
{
if ([FBSDKAccessToken currentAccessToken])
{
NSLog(@"Token is available : %@",[[FBSDKAccessToken currentAccessToken]tokenString]);
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, birthday, bio ,location ,friends ,hometown , friendlists"}]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error)
{
NSLog(@"resultis:%@",result);
}
else
{
NSLog(@"Error %@",error);
}
}];
}
}
Run Code Online (Sandbox Code Playgroud)
在viewdidload方法中调用此函数fetchUserInfo
[self fetchUserInfo];
Run Code Online (Sandbox Code Playgroud)
通过调用此方法,您将在登录后获得访问令牌,并且您希望明确指定有关该电子邮件的权限.通过此方法,您可以获取用户的电子邮件.请享用
| 归档时间: |
|
| 查看次数: |
3506 次 |
| 最近记录: |