我在解析iOS SDK时遇到了以下问题。在我的应用程序中,用户可以通过电子邮件(用户名)/密码或Facebook登录。当他们使用Facebook时,电子邮件(用户名)会自动设置。但是,如果用户先使用电子邮件/密码登录,注销后尝试使用Facebook登录,则会获得一个重复的帐户。在这种情况下,我的目标是将Facebook链接到以前的帐户。有没有办法在创建新帐户之前检查潜在新用户的电子邮件是否存在于解析数据库中,如果存在,则链接两个帐户?这样,用户就不必记住他们是否使用Facebook或电子邮件,他们可以无缝地使用两者。
谢谢。
这里需要的基本逻辑如下:
- 使用脸书对用户进行身份验证
- 获取您需要的其他信息 - 例如,从Facebook graph API阅读电子邮件,或者(在我的情况下)提示用户输入电话号码(您无法从Facebook获得)
- 在 Parse 用户表中搜索与此数据(电子邮件地址、电话号码等)匹配的帐户
- 如果找到匹配项,并且用户已根据此身份*进行身份验证,请链接帐户并登录用户。
- 如果未找到匹配项,请使用电子邮件/电话标识为用户创建新的 Parse 帐户
这里更详细地概述了:合并由Facebook注册的用户和已经通过电子邮件注册的用户?。有示例JS代码,但iOS的想法应该是相同的。
*密切注意解析器在最后一个答案中所说的内容。 如果Facebook用户声称拥有电子邮件地址或电话号码,您需要独立验证他们是否拥有该帐户(例如通过发送授权链接或代码)。
您可以对 User 表执行简单的查询,以查看是否已存在具有相同用户名的用户。如果是这样,您需要将Facebook数据链接到此帐户。他们的文档概述了如何使用 SDK 执行此操作:https://parse.com/docs/ios_guide#fbusers-link/iOS
它可以轻松地将"用户"与Facebook帐户链接。
NSArray *permissionsArray = @[ @"user_about_me", @"user_relationships", @"user_birthday", @"user_location"];
[PFFacebookUtils linkUser:user permissions:permissionsArray block:^(BOOL succeeded, NSError *error) {
//do anything
}];