微博、qq授权登录,无论成功或失败,相应的block都不回调
yutanchi opened this issue · 8 comments
yutanchi commented
如题,授权成功了,但是成功的block不调用
yutanchi commented
分享和登录的成功失败回调都不执行
yutanchi commented
文档需要更新
yutanchi commented
第二部添加全局回调中,iOS9以上 会调用- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options。两个方法中都需要添加
if ([OpenShare handleOpenURL:url]) {
return YES;
}
否则不回调
zhongdom commented
@yutanchi 你好,我和你遇到一样的问题,分享到qq的时候成功和失败的回调都没有执行。你只增加了- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
这个方法就正常回调了吗?我这边加了依旧没有回调
最终发现是Url Schemes
配置有问题,其中一个scheme是qq+(qq的appid转成16机制)
,这个最好在readme说明一下吧。
jingchangfa commented
@zhongdom
我这也是不会掉,我加了断点之后发现+(BOOL)QQ_handleOpenURL{}里面解析url的代码有问题啊。。。。是腾讯改变了返回格式导致的么
jingchangfa commented
改成了下面这个样子:
// 这个方法有问题,分享授权都是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;
}
}
WineKai commented
确实有这问题。我无论是用这个demo还是放在自己项目里,都在登录后没有回调。