我使用parse.com
作为我的应用程序的后端,它使用户能够通过他的Facebook或Twitter帐户登录。此外,它还具有将twitter / facebook链接到其预先存在的帐户的功能。
问题在于:
如果用户登录其facebook
帐户,则会在云上创建新的PFUser
。
如果同一用户再次登录其twitter
帐户,则会在云上创建另一个PFUser
。
现在,如果用户想要将其facebook
帐户与其twitter
帐户相关联,则parse.com
回复“此推特帐户已与另一位用户相关联”。
如何在这里合并两个PFUsers
?任何人都可以建议我解决这个问题的方法吗?
答案 0 :(得分:4)
如果没有看到任何代码,当您尝试链接Twitter帐户时,听起来就像是在调用PFTwitterUtils logInWithBlock
。这将是错误的方法,因为它只会创建一个新的PFUser而不是使用通过登录facebook创建的existring PFUser。
您要做的是使用PFTwitterUtils
方法将当前PFUser
与Twitter帐户相关联。 The Parse documentation显示了以下代码。
PFUser *user = [PFUser currentUser];
if (![PFTwitterUtils isLinkedWithUser:user]) {
[PFTwitterUtils linkUser:user block:^(BOOL succeeded, NSError *error) {
if ([PFTwitterUtils isLinkedWithUser:user]) {
NSLog(@"Woohoo, user logged in with Twitter!");
}
}];
}
答案 1 :(得分:4)
你可以做一件事:
当您将当前用户与另一个任何Facebook / Twitter帐户相关联时,您需要在某个时间点取消用户链接。让我们说当你注销时,你需要检查当前用户是否与Facebook / Twitter链接?
如果您当前的用户与您需要取消链接的任何其他用户相关联,以便您可以再次将Facebook / Twitter用户与任何其他用户相关联,就像这样
对于Facebook用户:
if([PFFacebookUtils isLinkedWithUser:[PFUser currentUser]]){
[PFFacebookUtils unlinkUserInBackground:[PFUser currentUser] block:^(BOOL Success,NSError *unlinkError){
if(!unlinkError){
// User unlinked
}else{
// Erro while unlink user
}
}];
}
对于Twitter用户:
if([PFTwitterUtils isLinkedWithUser:[PFUser currentUser]]){
[PFTwitterUtils unlinkUserInBackground:[PFUser currentUser] block:^(BOOL Success,NSError *unlinkError){
if(!unlinkError){
// unlink user
}else{
// Error while unlink
}
}];
}
答案 2 :(得分:3)
遗憾的是,似乎不可能将Facebook或Twitter帐户链接到多个PFUser。此外,似乎无法合并另外两个PFUser条目 - 请参阅Parse's answer here。
您可能想要做的是将PFUser表上的数据严格保留用于授权目的,并将其余数据保存在新的专用Parse类中(比如用户数据,由PFUser条目指向)。
从这个意义上讲,您将能够使用指向同一userData条目的多个PFUser条目。因此,如果您之前存在的PFUser条目链接到Parse后端中的特定Twitter帐户,则最好让用户登录到该特定PFUser,然后将该条目指向先前存在的userData条目。