Open yutanchi opened 7 years ago
分享和登录的成功失败回调都不执行
文档需要更新
第二部添加全局回调中,iOS9以上 会调用- (BOOL)application:(UIApplication )app openURL:(NSURL )url options:(NSDictionary<NSString ,id> )options。两个方法中都需要添加 if ([OpenShare handleOpenURL:url]) { return YES; } 否则不回调
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
这个方法就正常回调了吗?我这边加了依旧没有回调最终发现是Url Schemes
配置有问题,其中一个scheme是qq+(qq的appid转成16机制)
,这个最好在readme说明一下吧。
@zhongdom 我这也是不会掉,我加了断点之后发现+(BOOL)QQ_handleOpenURL{}里面解析url的代码有问题啊。。。。是腾讯改变了返回格式导致的么
改成了下面这个样子:
// 这个方法有问题,分享授权都是tencent开头的
+(BOOL)QQ_handleOpenURL{
NSURL* url=[self returnedURL];
if ([[url absoluteString] containsString:@"error"]||[[url absoluteString] containsString:@"error_description"]) {
//分享
NSDictionary *dic=[self parseUrl:url];
if (dic[@"error_description"]) {
[dic setValue:[self base64Decode:dic[@"error_description"]] forKey:@"error_description"];
}
if ([dic[@"error"] intValue]!=0) {
//错误
NSError *err=[NSError errorWithDomain:@"response_from_qq" code:[dic[@"error"] intValue] userInfo:dic];
if ([self shareFailCallback]) {
[self shareFailCallback]([self message],err);
}
}else{
// 成功
if ([self shareSuccessCallback]) {
[self shareSuccessCallback]([self message]);
}
}
return YES;
}else if([url.scheme hasPrefix:@"tencent"]){
//登陆auth
NSDictionary *ret=[self generalPasteboardData:[@"com.tencent.tencent" stringByAppendingString:[self keyFor:schema][@"appid"]] encoding:OSPboardEncodingKeyedArchiver];
if (ret[@"ret"]&&[ret[@"ret"] intValue]==0) {
if ( [self authSuccessCallback]) {
[self authSuccessCallback](ret);
}
}else{
NSError *err=[NSError errorWithDomain:@"auth_from_QQ" code:-1 userInfo:ret];
if ([self authFailCallback]) {
[self authFailCallback](ret,err);
}
}
return YES;
}
else{
return NO;
}
}
确实有这问题。我无论是用这个demo还是放在自己项目里,都在登录后没有回调。
找到了问题,可以正确回调。按@yutanchi说的可以正确回调。
如题,授权成功了,但是成功的block不调用