您如何确定 Parse 中的用户创建类型
How do you determine User creation type in Parse
在应用程序中,用户可以通过 email/password、Facebook 或 Twitter 注册。
当他们通过 Facebook 创建帐户时,该应用会将电子邮件字段设置为他们的 Facebook 帐户。 Twitter 不是这样,因为他们不共享电子邮件。
当使用 Facebook 注册的用户后来决定设置密码时会出现问题。
典型的密码更改表单由三个文本字段组成:
- 当前密码
- 新密码
- 重复新密码
如果用户是通过 Facebook 创建的,则 PFUser 对象不包含用户已知的密码。因此,在密码更改期间不能要求当前密码字段。
我如何判断用户是通过 Facebook/Twitter 还是通过 email/password 创建的,因为 Parse 中没有检查空密码的方法?
仅仅检查他们是否link使用 Facebook 或 Twitter 是不够的,因为该应用程序还可以选择 link 和取消 link Facebook 或 Twitter 进行身份验证帐号。
看来您正在寻找的只是一种确定当前 PFUser 的密码是否为 nil 的方法。您可以通过检查 follow 方法的结果是否为 nil 并继续执行您需要的任何代码来做到这一点。
if ([[PFUser currentUser] objectForKey:@"password"] == nil)
我找到了一种解决此问题的方法,适用于我的特定情况。
当用户使用 email/password 注册时,我有:
signupViewController.signUpView.emailAsUsername = YES;
根据文档,这会将新创建的 PFUser 的用户名和电子邮件设置为相同的值。
然而,即使使用此设置,当 Facebook 或 Twitter 是首次登录时,Parse 也会将用户对象的 'username' 字段设置为散列。
这意味着 Facebook 和 Twitter 登录的用户名不是有效的电子邮件,这意味着用户从未设置过密码。
我通过在 class PFSubclassing PFUser:
添加以下方法来完成此操作
-(BOOL)hasPassword
{
//isValidEmail is from a custom NSString category
if([self.username isValidEmail])
{
//they created their account with a username/password
return YES;
}
else
{
//they created their account with Facebook or Twitter
return NO;
}
}
此解决方案还需要在设置密码时将用户名更改为电子邮件。这是必需的,以便在下次更改密码时,将需要 'old password'。
不是最优雅的解决方案,但适用于当前版本的 Parse Framework (v1.6.2)。
在应用程序中,用户可以通过 email/password、Facebook 或 Twitter 注册。
当他们通过 Facebook 创建帐户时,该应用会将电子邮件字段设置为他们的 Facebook 帐户。 Twitter 不是这样,因为他们不共享电子邮件。
当使用 Facebook 注册的用户后来决定设置密码时会出现问题。
典型的密码更改表单由三个文本字段组成:
- 当前密码
- 新密码
- 重复新密码
如果用户是通过 Facebook 创建的,则 PFUser 对象不包含用户已知的密码。因此,在密码更改期间不能要求当前密码字段。
我如何判断用户是通过 Facebook/Twitter 还是通过 email/password 创建的,因为 Parse 中没有检查空密码的方法?
仅仅检查他们是否link使用 Facebook 或 Twitter 是不够的,因为该应用程序还可以选择 link 和取消 link Facebook 或 Twitter 进行身份验证帐号。
看来您正在寻找的只是一种确定当前 PFUser 的密码是否为 nil 的方法。您可以通过检查 follow 方法的结果是否为 nil 并继续执行您需要的任何代码来做到这一点。
if ([[PFUser currentUser] objectForKey:@"password"] == nil)
我找到了一种解决此问题的方法,适用于我的特定情况。
当用户使用 email/password 注册时,我有:
signupViewController.signUpView.emailAsUsername = YES;
根据文档,这会将新创建的 PFUser 的用户名和电子邮件设置为相同的值。
然而,即使使用此设置,当 Facebook 或 Twitter 是首次登录时,Parse 也会将用户对象的 'username' 字段设置为散列。
这意味着 Facebook 和 Twitter 登录的用户名不是有效的电子邮件,这意味着用户从未设置过密码。
我通过在 class PFSubclassing PFUser:
添加以下方法来完成此操作-(BOOL)hasPassword
{
//isValidEmail is from a custom NSString category
if([self.username isValidEmail])
{
//they created their account with a username/password
return YES;
}
else
{
//they created their account with Facebook or Twitter
return NO;
}
}
此解决方案还需要在设置密码时将用户名更改为电子邮件。这是必需的,以便在下次更改密码时,将需要 'old password'。
不是最优雅的解决方案,但适用于当前版本的 Parse Framework (v1.6.2)。