社会化登录踩的几个坑
2016-06-23 20:02
483 查看
有一年没有碰QQ登录/微信登录/新浪登录的东西了,偶然间发现一些问题,在此总结一下,做一下记录。
这里将LoginActivity的launchMode修改为singleTask就ok了!
返回登陆页面。
理论上没有什么问题啊,可是LoginActivity的onNewIntent怎么没有调用呢?
打断点调试了一下,onCreate方法调用了,没办法将onNewIntent中处理微信客户端返回信息的逻辑在onCreate中copy一份吧。
登录逻辑完成后,仅仅销毁当前页面,之前的登录页面怎么处理啊?在onResume判断一下,如果当前已经登录,直接销毁登录页面。
微信登录调试有一个非常不好的地方,在你调试和正式发布的时候,都要向官方修改一下应用签名。
可是,你发现还是不行!
需要给微信app清理一下缓存
参考地址:
http://ask.dcloud.net.cn/question/18354
![](https://img-blog.csdn.net/20160623195048767)
弹出这一张图片,你会怎么想,是我的APP中用于qq登录的sdk版本太低了?去官网看了一下,我使用的是最新的,是我的QQ客户端太低了,升级一下,也不行!
在网上搜索了一下,需要添加测试账号!
在open.qq.com,“返回旧版”->”管理中心”->点击要调试的app->”QQ登录”->”应用调试者”,添加上就ok了!
QQ里面是通过回调来处理的,之前一直正常,升级了一下后,就不行了
参考
http://wiki.open.qq.com/wiki/Android_API%E8%B0%83%E7%94%A8%E8%AF%B4%E6%98%8E#1.1_.E7.99.BB.E5.BD.95.2F.E6.A0.A1.E9.AA.8C.E7.99.BB.E5.BD.95.E6.80.81
才知道,需要在onActivityResult中进行处理。
官方文档是这么写的
如果你这么做,肯定不行!
下面才是正确的写法
我的神啊,文档可以做的这么烂!
Android5以下新浪登录“回不来”
这个问题的原因挺简单的,将LoginActivity的launchMode设置为singleInstance后,APP调用新浪客户端,新浪客户端无法将认证信息传回来——不能向LoginActivity.onActivityResult回传正确的数据。这里将LoginActivity的launchMode修改为singleTask就ok了!
微信登录更奇葩
将LoginActivity的launchMode设置为singleTask,APP调用微信客户端认证成功后,WXEntryActivity通过简单的intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); thisActivity.startActivity(intent); thisActivity.finish();
返回登陆页面。
理论上没有什么问题啊,可是LoginActivity的onNewIntent怎么没有调用呢?
打断点调试了一下,onCreate方法调用了,没办法将onNewIntent中处理微信客户端返回信息的逻辑在onCreate中copy一份吧。
登录逻辑完成后,仅仅销毁当前页面,之前的登录页面怎么处理啊?在onResume判断一下,如果当前已经登录,直接销毁登录页面。
微信登录调试有一个非常不好的地方,在你调试和正式发布的时候,都要向官方修改一下应用签名。
可是,你发现还是不行!
需要给微信app清理一下缓存
参考地址:
http://ask.dcloud.net.cn/question/18354
QQ登录“莫名奇妙”
弹出这一张图片,你会怎么想,是我的APP中用于qq登录的sdk版本太低了?去官网看了一下,我使用的是最新的,是我的QQ客户端太低了,升级一下,也不行!
在网上搜索了一下,需要添加测试账号!
在open.qq.com,“返回旧版”->”管理中心”->点击要调试的app->”QQ登录”->”应用调试者”,添加上就ok了!
QQ里面是通过回调来处理的,之前一直正常,升级了一下后,就不行了
参考
http://wiki.open.qq.com/wiki/Android_API%E8%B0%83%E7%94%A8%E8%AF%B4%E6%98%8E#1.1_.E7.99.BB.E5.BD.95.2F.E6.A0.A1.E9.AA.8C.E7.99.BB.E5.BD.95.E6.80.81
才知道,需要在onActivityResult中进行处理。
官方文档是这么写的
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == Constants.REQUEST_API) { if(resultCode == Constants.RESULT_LOGIN) { mTencent.handleLoginData(data, loginListener); } super.onActivityResult(requestCode, resultCode, data); }
如果你这么做,肯定不行!
下面才是正确的写法
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == Constants.REQUEST_LOGIN&&resultCode==RESULT_OK) { mTencent.handleLoginData(data, qqLoginListener); } super.onActivityResult(requestCode, resultCode, data); }
我的神啊,文档可以做的这么烂!
相关文章推荐
- 网站接入QQ登录的两种方法
- qq登录,新浪微博登录接口申请过程中遇到的问题
- 微信开放平台之网站授权微信登录功能
- 自定义网页QQ登录按钮
- 关于使用微信登录第三方APP的实现(Android版)
- 实现QQ登录第三方APP(Android)
- 搜狐推出社会化评论系统——畅言
- [网站工具]bShare社会化分享统计工具
- joomlaQQ登录
- QQ登录,微信登录(iOS)
- 百度社会化分享服务
- httpClient模拟新浪登录
- 解决 IOS9.0 调用qq2.91SDK登录 只显示web页面而不能调用客户端登录的问题
- IOS9.0 调用QQ登录页面不显示
- 论SCRM系统对传统行业的冲击
- 解决在低于iOS6的设备上正常运行iOS6自带社交分享功能import<Social/Social.h>
- 微信登录的openid和unionid区别