android h5 qq登录,Android webview一键登录手机QQ(2018.11)

本文介绍了在Android中,如何处理H5QQ登录时遇到的问题。由于QQ网页版不再允许输入账号密码,而是通过定制的uri协议跳转手机QQ进行一键登录。开发者需要在WebView的shouldOverrideUrlLoading方法中监听特定URL,通过Intent启动QQ应用。登录完成后,通过自定义的QQActivity捕获返回的URL,解析获取code,从而完成OAuth授权流程。
摘要由CSDN通过智能技术生成

前言

不知道什么时候开始, QQ oauth登陆, 不再让你在网页输入账号密码了. 页面提示正在拉起QQ手机版. 然后程序就在这里没有然后了.

可能有人会问, 为什么不使用QQ sdk做登陆. 这里提2点:

Android, iOS, Web 3端需要打通, 才能确保一个QQ用户唯一.

平台sdk, 封装了QQ登陆, 对外多个应用提供. 比如常见的游戏sdk.

搜索了下这个sdk就无法QQ登陆了, 应该是QQ web页面不让输入账号密码之后出现的.

QQ只有一键登录,无法输入账号密码

解决问题

首先在webview的shouldOverrideUrlLoading(WebView view, String url)方法里打印下url. 会发现输出

wtloginmqq://ptlogin/qlogin?p=xxxxxxxxxxxxxxxxxxxxxxxxxxxx

这是个非http开头的地址, 内嵌的webview无法识别. 可以联想到QQ应该是走了定制的uri协议来跳转手机QQ. 我们可以通过intent来让系统帮我们跳转到QQ.

if (url.startsWith("wtloginmqq://ptlogin/qlogin")) {

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

startActivity(intent);

}

加了上述代码, 就能启动QQ并登陆了. 登陆完了, 还会提示跳转到浏览器. 但是这样有个问题, 我们应用拿不到oauth要用到的code了.

既然QQ会登陆完毕会跳转浏览器, 那就让我们应用也能接收url跳转.

android:name=".ui.activity.QQActivity"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值