Parse.com - 使用Fb身份验证时更新PFUser的电子邮件

时间:2014-05-12 07:33:59

标签: ios objective-c facebook-graph-api permissions parse-platform

我在登录或通过Facebook注册时正确接收PFUser。我的权限数组:

NSArray *permissionsArray = @[ @"user_about_me",@"email"];

在Parse Data浏览器中,我可以看到用户创建了一些长字符串用户名和正确的authData等。但是电子邮件字段仍然是空的。

我是否需要单独调用以填充新创建的PFUser的电子邮件字段?如果是,那么正确的步骤是什么。

另一个问题,忘记密码机制如何在Parse.com中为facebook认证用户工作?我是否需要首先通过调用graph api填充电子邮件值,然后使用该电子邮件地址获取忘记密码功能?

1 个答案:

答案 0 :(得分:1)

您需要单独调用以填充电子邮件属性。用户通过身份验证后,您可以调用 FBRequestConnection 类的startForMeWithCompletionHandler:方法获取用户信息,然后将其保存到当前用户。你的电话应该是这样的:

NSArray *permissionsArray = @[ @"user_about_me",@"email"];
[PFFacebookUtils logInWithPermissions:permissionsArray block:^(PFUser *user, NSError *error) {
    if (!error && user) {
        [FBRequestConnection startForMeWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
            if (!error) {
                [[PFUser currentUser] setObject:[result objectForKey:@"email"]
                                         forKey:@"email"];
                [[PFUser currentUser] saveInBackground];
            }
        }];
    }
}];

关于Facebook用户的忘记密码,它没有意义,因为如果用户忘记了密码,它应该在Facebook上更改它。但是,如果您调用requestPasswordResetForEmail:方法,它会向电子邮件存在发送更改密码的说明。考虑到logInWithUsername:password:使用属性用户名来登录用户,而不是电子邮件,并且该应用中的Facebook用户可能不知道该值。