openshare icon indicating copy to clipboard operation
openshare copied to clipboard

微博、qq授权登录,无论成功或失败,相应的block都不回调

Open yutanchi opened this issue 8 years ago • 8 comments

如题,授权成功了,但是成功的block不调用

yutanchi avatar Mar 21 '17 03:03 yutanchi

分享和登录的成功失败回调都不执行

yutanchi avatar Mar 21 '17 07:03 yutanchi

文档需要更新

yutanchi avatar Mar 22 '17 02:03 yutanchi

第二部添加全局回调中,iOS9以上 会调用- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options。两个方法中都需要添加 if ([OpenShare handleOpenURL:url]) { return YES; } 否则不回调

yutanchi avatar Mar 22 '17 02:03 yutanchi

@yutanchi 你好,我和你遇到一样的问题,分享到qq的时候成功和失败的回调都没有执行。你只增加了- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options这个方法就正常回调了吗?我这边加了依旧没有回调

最终发现是Url Schemes配置有问题,其中一个scheme是qq+(qq的appid转成16机制),这个最好在readme说明一下吧。

zhongdom avatar Aug 16 '17 07:08 zhongdom

@zhongdom 我这也是不会掉,我加了断点之后发现+(BOOL)QQ_handleOpenURL{}里面解析url的代码有问题啊。。。。是腾讯改变了返回格式导致的么

jingchangfa avatar Sep 14 '17 11:09 jingchangfa

改成了下面这个样子:

// 这个方法有问题,分享授权都是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;
}
}

jingchangfa avatar Sep 14 '17 11:09 jingchangfa

确实有这问题。我无论是用这个demo还是放在自己项目里,都在登录后没有回调。

WineKai avatar Sep 19 '18 08:09 WineKai

找到了问题,可以正确回调。按@yutanchi说的可以正确回调。

WineKai avatar Sep 19 '18 08:09 WineKai