项目常见问题(二)

作者: bigParis | 来源:发表于2017-02-14 09:04 被阅读191次

    QQ登录是一个很常见的功能, 也有很多第三方库帮我们实现了这样的功能, 今天提到的是一个UI上的问题.

    问题重现

    1 点击QQ登录按钮, 呼出QQ登录授权页面.
    2 点击授权, 进行登录.
    3 退出登录.
    4 再次点击QQ登录按钮, 这次唤起的是WEB页面

    why? 明明已经安装了QQ, 为什么会唤起WEB, 应该调到QQ客户端的授权页面才对啊!

    产生问题的原因

    点击QQ登录按钮会执行这样的代码

    NSArray *permissions = [NSArray arrayWithObjects:@"get_user_info", @"add_share", nil];
    [_tencentOAuth authorize:permissions inSafari:NO];
    

    为什么第二次点击的时候会有问题? 因为当我们退出的时候没有调用

    [_tencentOAuth logout:self];
    

    这里相当于摘掉代理, 但是_tencentOAuth还是有值的.
    所以再次点击QQ登录按钮的时候要这样做

    NSArray *permissions = [NSArray arrayWithObjects:@"get_user_info", @"add_share", nil];
    _tencentOAuth = [[TencentOAuth alloc] initWithAppId:kTencentQQSDKDemoAppId andDelegate:self];
    _tencentOAuth.redirectURI = @"www.qq.com";
    [_tencentOAuth authorize:permissions inSafari:NO];
    

    这样再次点击的时候就重新创建了一个_tencentOAuth也不会产生二次添加代理的问题. 至此, 问题解决了.

    总结: 有些时候, 我们使用一些第三方SDK或者框架, 可能SDK或者框架本身并没问题, 而是我们使用者用的时候没有真正读懂第三方的用法, 相信通过这样的例子, 会让我们了解, 使用第三方的东西的时候一定要深度了解一下, 否则有时候产生了问题真的是很难处理的.

    相关文章

      网友评论

        本文标题:项目常见问题(二)

        本文链接:https://www.haomeiwen.com/subject/mnjtwttx.html