最近有个朋友问为何wkwebview第三方登录点击一键登录会提示qq版本过低,我的第一个反应是这个要装qq最新的sdk吧,然后研究发现,其实情况不是这么简单。
先说结论,不需要装sdk,不需要去qq互联注册,只需要安排好自己的wkwebview就好了。
1.安排一个vc,里面加上wkwebview,navigationDelegate设置为vc,实现navigationDelegate的方法
|
|
2.这里的bbb是当前应用的url schemes,可自定义,这里的&schemacallback一个字母都不能改,不然会跳不回当前应用。这里的currentURLStr 是保存出去的URL的,在下面会用到。
在vc里实现一个方法,加载url的,为了登录跳回刷新webview做准备,还需要准备一个urldecode的方法,代码如下:
3.在appdelegate里实现跳转回来接入的代码
4.这里有坑的地方就是qq回来的会是bbb://(null)xxxx,你要用到的是xxxx,需要做一次替换,在跳转qq的时候也是要把wtloginmqq://ptlogin/qlogin?p=去掉,保留的2个字符串最后拼起来,才能完整完成qq登录,最后,vc可以单例,也可以不单例,只要能在appdelegate找到最开始的vc就行了,做的时候记得设置自己的url scheme和qq的白名单。