LeanCloud解除绑定三方账号时解除不了,也没报错?
authData = {
qq = {
"access_token" = CD7E0FA51A11E87954581E510372DD9E;
"expires_in" = {
"__type" = Date;
iso = "2016-04-04T08:32:08.954Z";
};
openid = FB6E162858C1B26B026B2A8925482607;
};
weibo = {
"access_token" = "2.00_bfXwC5kcIHBa6baafc0770zYPw3";
"expiration_in" = {
"__type" = Date;
iso = "2016-01-12T18:59:40.459Z";
};
openid = 2697317893;
uid = 2697317893;
};
weixin = {
"access_token" = "OezXcEiiBSKSxW0eoylIeO-kAO-dqc5KYJ-Tx6ijcQm_NM3r4zdu2Nl8AU_WEdAM1_Bz-wHmjWUBcal5827I03GtGNFc9NV31xr9mTWmKE-wFMD_DoHFqb7Oy4KuqcUtsA2zaFBXv2QGGrcb8GdPMQ";
"expires_in" = 7200;
openid = ozXdFvyG8ny2EalmNMhiIQHYuXmM;
uid = "oopY5t7GJp_6mwXVMljqTg1tZEWw";
};
};
city = "\U5317\U4eac\U5e02";
emailVerified = 0;
exp = 0;
inviteCount = 0;
ip = "10.10.39.138";
isEnable = 1;
isTeamLeader = 0;
level = 0;
location = "";
lokerId = 100043;
myId = 200036;
name = "\U514b\U9c81\U5fb7";
points = 0;
userType = 1;
verify = 0;
}, estimatedData:{
}, relationData:{
}>
解除绑定之后还是有authData ,ERROR返回的也是nil,调用的方法是-(void)deleteAuthDataForPlatform:(NSString *)platform block:(AVUserResultBlock)block;

你好,我尝试复现了一下,并没有发现你所说的情况。
请打开日志,将详细的request和response粘贴出来看下。

开启调试日志
初始化时调用以下函数。注意发布应用时关闭日志,避免泄露数据。
iOS SDK:
[AVOSCloud setAllLogsEnabled:YES];

调用这个方法的时候就一个这样的日志:
[INFO] -[AVObject saveWithEventually:verifyBeforeSave:error:] The AVObject isn't changed, ignore this saving call.
调用方法的方式为:
IHUser* currentUser = [IHUser currentUser];
[currentUser deleteAuthDataForPlatform:AVOSCloudSNSPlatformQQ block:^(AVUser *user, NSError *error) {
if (!error) {

                }else{

                }

            }];

麻烦帮忙看看是什么问题?谢谢?

currentUser先从服务器端fetch一下最新的数据,然后调用deleteAuthDataForPlatform尝试下呢?

还是不可以?
下面是修改后的代码:
AVQuery* query = [IHUser query];
[query whereKey:@"objectId" equalTo:[[IHDataModel getInstance] getLoginUserId]];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if ([objects count]>0) {
IHUser* currentUser = (IHUser*)objects.firstObject;
switch (btn.tag) {
case 0:
{
NSLog(@"QQ");
if (!btn.on) {
[currentUser deleteAuthDataForPlatform:AVOSCloudSNSPlatformQQ block:^(AVUser *user, NSError *error) {
if (!error) {

                        }else{

                        }

                    }];
                }

下方是打印出解绑前后的数据还是一样的:
解绑前:currentUser
(lldb) po currentUser
authData = {
qq = {
"access_token" = CD7E0FA51A11E87954581E510372DD9E;
"expires_in" = {
"__type" = Date;
iso = "2016-04-04T08:32:08.954Z";
};
openid = FB6E162858C1B26B026B2A8925482607;
};
weibo = {
"access_token" = "2.00_bfXwC5kcIHBa6baafc0770zYPw3";
"expiration_in" = {
"__type" = Date;
iso = "2016-01-12T18:59:40.459Z";
};
openid = 2697317893;
uid = 2697317893;
};
weixin = {
"access_token" = "OezXcEiiBSKSxW0eoylIeO-kAO-dqc5KYJ-Tx6ijcQm_NM3r4zdu2Nl8AU_WEdAM1_Bz-wHmjWUBcal5827I03GtGNFc9NV31xr9mTWmKE-wFMD_DoHFqb7Oy4KuqcUtsA2zaFBXv2QGGrcb8GdPMQ";
"expires_in" = 7200;
openid = ozXdFvyG8ny2EalmNMhiIQHYuXmM;
uid = "oopY5t7GJp_6mwXVMljqTg1tZEWw";
};
};
city = "\U5317\U4eac\U5e02";
emailVerified = 0;
exp = 0;
inviteCount = 0;
ip = "10.10.39.138";
isEnable = 1;
isTeamLeader = 0;
level = 0;
location = "";
lokerId = 100043;
myId = 200036;
name = "\U514b\U9c81\U5fb7";
points = 0;
runningGender = "";
userType = 1;
verify = 0;
weight = 0;
}, estimatedData:{
}, relationData:{
}>
解绑后:user以及返回的error为nil
(lldb) po user
authData = {
qq = {
"access_token" = CD7E0FA51A11E87954581E510372DD9E;
"expires_in" = {
"__type" = Date;
iso = "2016-04-04T08:32:08.954Z";
};
openid = FB6E162858C1B26B026B2A8925482607;
};
weibo = {
"access_token" = "2.00_bfXwC5kcIHBa6baafc0770zYPw3";
"expiration_in" = {
"__type" = Date;
iso = "2016-01-12T18:59:40.459Z";
};
openid = 2697317893;
uid = 2697317893;
};
weixin = {
"access_token" = "OezXcEiiBSKSxW0eoylIeO-kAO-dqc5KYJ-Tx6ijcQm_NM3r4zdu2Nl8AU_WEdAM1_Bz-wHmjWUBcal5827I03GtGNFc9NV31xr9mTWmKE-wFMD_DoHFqb7Oy4KuqcUtsA2zaFBXv2QGGrcb8GdPMQ";
"expires_in" = 7200;
openid = ozXdFvyG8ny2EalmNMhiIQHYuXmM;
uid = "oopY5t7GJp_6mwXVMljqTg1tZEWw";
};
};
city = "\U5317\U4eac\U5e02";
emailVerified = 0;
exp = 0;
inviteCount = 0;
ip = "10.10.39.138";
isEnable = 1;
isTeamLeader = 0;
level = 0;
location = "";
lokerId = 100043;
myId = 200036;
name = "\U514b\U9c81\U5fb7";
points = 0;
runningGender = "";
userType = 1;
verify = 0;
weight = 0;
}, estimatedData:{
}, relationData:{
}>

(lldb) po error
nil

像这样不报错,也不能起到作用的接口,一般是什么情况?你们遇到过吗?

需要用户登录后,用[AVUser currentUser]获取当前用户,然后再调用删除的接口。
因为AVUser有权限管理,只有自己才能改动自己的账号信息,而Query下来的AVUser没有Token,无法对自己的账户做改动。

最初就是直接[AVUser currentUser]这样获取的啊,你说要从服务器从新获取,我就改用了查询那个方法从服务器拉取心得数据,这个操作就是在用户登录之后才能有的操作?那现在的解决方案还是直接[AVUser currentUser]获取吗?

改为[AVUser currentUser]
还是抱着个错误
[INFO] -[AVObject saveWithEventually:verifyBeforeSave:error:] The AVObject isn't changed, ignore this saving call.

登录,然后[AVUser currentUser],然后再删除。
我没办法复现你的情况,所以可以发我一个可以复现情况的小的Demo测试下。

这样吧,把你写的小DEMO发给我,我看看

1、下载官方Demo
https://github.com/leancloud/leancloud-social-ios4
2、替换方法weiboLogin

- (IBAction)weiboLogin:(id)sender {
    // 如果安装了微博,直接跳转到微博应用,否则跳转至网页登录
    [AVOSCloudSNS loginWithCallback:^(id object, NSError *error) {
        if (error) {
            NSLog(@"failed to get authentication from weibo. error: %@", error.description);
        } else {
            [AVUser loginWithAuthData:object platform:AVOSCloudSNSPlatformWeiBo block:^(AVUser *user, NSError *error) {
                if ([self filterError:error]) {
                    [AVUser logInWithUsernameInBackground:@"123" password:@"123" block:^(AVUser *user, NSError *error) {
                        if (!error) {
                            NSLog(@"登录成功");
                            // 增加authData
                            [user addAuthData:object platform:AVOSCloudSNSPlatformWeiBo block:^(AVUser *user, NSError *error) {
                                if (!error) {
                                    NSLog(@"绑定authdata成功");
                                    // 删除authData
                                    [user deleteAuthDataForPlatform:AVOSCloudSNSPlatformWeiBo block:^(AVUser *user, NSError *error) {
                                        if (!error) {
                                            NSLog(@"删除authdata成功");
                                        } else {
                                            NSLog(@"删除authdata失败%@", error);
                                        }
                                    }];
                                    
                                    
                                } else {
                                    NSLog(@"绑定authdata失败%@", error);
                                }
                            }];
                            
                        } else {
                            NSLog(@"登录失败%@", error);
                        }
                    }];
                }
            }];
        }
    } toPlatform:AVOSCloudSNSSinaWeibo];
}

我也遇到这个问题! 是不是 在deleteAuthDataForPlatform 的时候 必须要先登录?

我们的就是登录状态下,进行的这样的操作

我也是~~~ 登录的状态!但是就是 解除不了!

最后你解决了吗?怎么解决的?我是用电话号登陆的,然后绑定的三方账号可以成功绑定,但是解绑就是解绑不了

完全跟你一样~~~ 昨天搞了一天 都搞不定~~~ 也是 电话号码+ 密码 登录 然后 再调用那个解除绑定的! 虽然返回的结果User 是 已经解除了!但是到了另外一个界面 再看看 currentUser 的时候 还是没有解除到

就在当前调用了她们的解绑方法之后,block回调里边的返回的user里边,authData还有,晕死

我的返回的block 没有 但是 在另外一个界面再看看 还是有

你执行解绑操作后如果返回的user里边已经删除了,你重新登录看看应该就没有了吧?或者你不想重新登录的时候就强制用返回来的已经删除的user更新一下当前的currentUser,因为他是有缓存的,我这边是根本就没有删除,哎。。。