• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iOS Facebook 获取用户邮箱

[复制链接]
菜鸟教程小白 发表于 2022-12-12 10:51:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我尝试了 2000 多种方法来获取用户的电子邮件。我无法从 Facebook SDK 的图形 API 中获取它。它不包含电子邮件属性。我还尝试将电子邮件属性手动添加到 FB 框架中,但没有任何反应。是否可以下载第一个兼容 iOS 7 的 FB SDK?它仍然具有电子邮件属性,不是吗?或者有没有其他方法可以获得真实的电子邮件,我必须与他们合作。我不需要 [email protected]

感谢您的建议。

编辑

NSArray *permissions = @[@"email", @"public_profile"];
    [PFFacebookUtils logInWithPermissions:permissions block:^(PFUser *user, NSError *error) {
        if (!user) {
            if (!error) {
                NSLog(@"The user cancelled the Facebook login.");
            } else {
                NSLog(@"An error occurred: %@", error.localizedDescription);
            }


            if ([delegate respondsToSelectorselector(commsDidLogin]) {
                [delegate commsDidLogin:NO];
            }
        } else {
            if (user.isNew) {
                NSLog(@"User signed up and logged in through Facebook!");
            } else {
                NSLog(@"User logged in through Facebook!");
            }

            [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                if (!error) {
                    PFUser *usere = [PFUser currentUser];
                    [usere setObject:[result objectForKey"first_name"] forKey"name"];
                    [usere setObject:[result objectForKey"last_name"] forKey"surname"];
                 //   [usere setObject:[result objectForKey"email"] forKey"mail"];
                    [usere saveEventually];
                     NSLog(@"user info: %@", result);
                        }
            }];

                }
                if ([delegate respondsToSelectorselector(commsDidLogin]) {
                    [delegate commsDidLogin:YES];
                }
            }];
        }



Best Answer-推荐答案


我没有图形 API 的代码,

但是对于新的 facebook sdk 版本 3,我有相应的代码。

-(void)openFbSession
{
    [[self appDelegate].session closeAndClearTokenInformation];

    NSArray *permissions =     [NSArray arrayWithObjects"email",@"user_location",@"user_birthday",@"user_hometown",nil];
    [self appDelegate].session = [[FBSession alloc] initWithPermissions:permissions];

    [[self appDelegate].session openWithCompletionHandler:^(FBSession *session,
                                                            FBSessionState status,
                                                            NSError *error) {
        if(!error)
        {
            NSLog(@"success");
            [self myFbInfo];
        }
        else
        {
            NSLog(@"failure");
        }

    }];
}

对于所有信息,myFbInfo 方法是

-(void)myFbInfo
{
    [FBSession setActiveSession:[self appDelegate].session];

    [[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *FBuser, NSError *error) {
        if (error) {
            // Handle error
        }

        else {
            //NSString *userName = [FBuser name];
            //NSString *userImageURL = [NSString stringWithFormat"https://graph.facebook.com/%@/picture?type=large", [FBuser id]];
            NSLog(@"Name : %@",[FBuser name]);
            NSLog(@"first name : %@",[FBuser first_name]);
            NSLog(@"Last name : %@",[FBuser last_name]);
            NSLog(@"ID : %@",[FBuser id]);
            NSLog(@"username : %@",[FBuser username]);
            NSLog(@"Email : %@",[FBuser objectForKey:@"email"]);

            NSLog(@"user all info : %@",FBuser);

              }
    }];

}

编辑


在 appdelegate.h 中

@property (strong, nonatomic) FBSession *session;

在 appdelegate.m 中

- (BOOL)application: (UIApplication *)application openURL: (NSURL *)url sourceApplication: (NSString *)sourceApplication annotation: (id)annotation
{
    //NSLog(@"FB or Linkedin clicked");
    return [self.session handleOpenURL:url];
}


- (void)applicationDidBecomeActiveUIApplication *)application
{
    [FBSession.activeSession handleDidBecomeActive];
}

- (void)applicationWillTerminateUIApplication *)application
{
    [self.session close];
}

关于iOS Facebook 获取用户邮箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24890798/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap