Mah*_*dam 5 facebook ios parse-platform
我在iOS应用程序中使用解析,有两种注册方式,使用电子邮件/密码或Facebook登录.
当用户使用他的电子邮件/密码注册然后注销并尝试使用具有相同电子邮件的Facebook帐户注册时,会出现问题.
我正在使用[PFFacebookUtils logInInBackgroundWithReadPermissions:block:Facebook注册,Users在Parse 的表中创建一个新的用户对象
现在我有两个同一用户的记录,我无法使用用户电子邮件更新包含Facebook信息的记录,因为Parse不允许重复的电子邮件
那么什么应该是解决这个问题的最佳解决方案?
我使用@kRiZ解决方案使用普通的Facebook代码登录,然后创建新用户或使用Facebook数据链接用户
- (void)loginWithFacebookWithSuccessCallback:(APISuccessCallback)successCallback
andFailureCallback:(APIFailureCallback)failureCallback {
// Login PFUser using Facebook
NSArray *permissionsArray = @[@"public_profile", @"email"];
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions: permissionsArray handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
failureCallback(error);
} else {
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me?fields=id,first_name,last_name,email,gender" parameters:nil];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id fbResult, NSError *error) {
if (!error) {
NSString *email = result[@"email"];
User *existingUser = [self getUserByEmail:email];
if (existingUser == nil) {
[self signUpNewUserWithEmail:email];
} else {
// Need to set the current user to existingUser
}
[self linkCurrentWithAccessToken:result.token
successCallback(@{RESULT:RESULT_OK});
} else {
failureCallback(error);
}
}];
}
}];
}
Run Code Online (Sandbox Code Playgroud)
现在问题是将[PFUser currentUser]分配给现有用户,以防它已经存在
您可以尝试使用这些方法将新的 Facebook 用户链接到 Parse 上的现有用户[PFFacebookUtils linkUserInBackground:*...。
if (![PFFacebookUtils isLinkedWithUser:user]) {
[PFFacebookUtils linkUserInBackground:user withReadPermissions:nil block:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@"Woohoo, user is linked with Facebook!");
}
}];
}
Run Code Online (Sandbox Code Playgroud)
请参阅有关链接的解析文档。
更新:
与 FB 访问令牌的链接方法:
[PFFacebookUtils linkUserInBackground:user
withAccessToken:accessToken
block:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@"Woohoo, the user is linked with Facebook!");
}
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
286 次 |
| 最近记录: |