项目常见问题(二)

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或者框架本身并没问题, 而是我们使用者用的时候没有真正读懂第三方的用法, 相信通过这样的例子, 会让我们了解, 使用第三方的东西的时候一定要深度了解一下, 否则有时候产生了问题真的是很难处理的.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,323评论 25 708
  • 风起时 我就在你的身边 这街上满是喧哗的人群 满是 那不断要浮现的 美好时光 风停时却已黯然 楼空 园静 只留下那...
    话晨阅读 187评论 0 8
  • 普罗旺斯,普罗旺斯, 一支经久不息的歌。 回忆的余香盈地, 我折了静谧的一枝。 午后最寂静的暖阳, 是油画中艳丽的...
    肖小小的小阅读 366评论 6 5
  • 吃饭饭反反复复 >#### 烦烦烦重重复复v不姐姐 烦烦烦 表现不错就放假就到家等哈东湖说哈 ...
    流浪狮子阅读 371评论 0 0

友情链接更多精彩内容