今天要做有关第三方登陆与LeanCloud数据关联的存储,遇到了一些问题,现在分享给大家。
首先是第三方登陆后,我们应该如何解决第三方应用资料与本应用的关联。一开始我认为是只要第三方登陆了本应用就有了相应的资料,然并卵!这儿我们就需要把第三方的资料存储到本应用中,首先我们先把我们需要的用户资料取出来,并在本应用的LeanCloud注册和登陆。这个问题就解决了!
我这儿是微博的第三方登陆大家参考一下!
[ShareSDK getUserInfo:SSDKPlatformTypeSinaWeibo
onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error)
{
if (state == SSDKResponseStateSuccess)
{
AVUser *user1 = [AVUser user];
user1.username = user.nickname;// 设置用户名
user1.password = user.uid;// 设置密码
// user1.email = emal;// 设置邮箱
[user1 signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@" 注册成功");
} else {
}
}];
//然后在登陆
[AVUser logInWithUsernameInBackground:name password:user.uid block:^(AVUser *user, NSError *error) {
if (user != nil) {
NSLog(@" 登陆成功");
NSLog(@"%@",user.objectId);
//登陆成功过后 把用户的 objectId 保存下来 (后面需要)
[[NSUserDefaults standardUserDefaults]setObject:user.objectId forKey:@"objectId"];
[[NSUserDefaults standardUserDefaults]setObject:@"1" forKey:@"isLogin"];
AVUser *uuss = [AVUser currentUser];
NSLog(@"userName = %@",uuss.username);
NSLog(@"userEmail = %@",uuss.email);
NSLog(@"userPassword = %@",uuss.password);
} else {
}
}];
}
else
{
NSLog(@"%@",error);
}
}];
后面有一个问题可能是初学者 最难想到的。我就是😝
那就是我们在注册登陆过后 怎么把后面的数据个用户关联起来呢?
这儿我们可能会因为新建一个表后每一个表插入数据也会有一个objectId ,可能会被这个所迷惑。其实我们需要重新新建一个字段,用来存储上面所保存的User objectId,让这个字段与资料关联。
通过这个字段我们可以查询到自己需要的数据。比如:
我这儿根据年月查询用户的信息,其中objectId就是锁定用户的。
我是初学者,所以说 不对之处请谅解!