Webview如何触发onReceivedLoginRequest;Webview实现自动登录

Webview触发onReceivedLoginRequest

这个知识点,我搜索了很多资料,都没确切的提到。以小米手机为例,分析下他的应用原理
1、自己写一个app集成Webview,同时需要打开Android的调试模式,调试方式如下:
Chrome调试android设备
2、WebView启动链接https://www.mi.com/
会看到如下页面:
Webview如何触发onReceivedLoginRequest;Webview实现自动登录_第1张图片
3、触发小米商城登录
Webview如何触发onReceivedLoginRequest;Webview实现自动登录_第2张图片
4、使用chrome监听登录页的请求
Webview如何触发onReceivedLoginRequest;Webview实现自动登录_第3张图片
5、查看serviceLogin的请求详情
Webview如何触发onReceivedLoginRequest;Webview实现自动登录_第4张图片
6、展开Response Headers,翻页到最下方,你会看到一个很关键的header

x-auto-login: realm=com.xiaomi&args=https%3A%2F%2Faccount.xiaomi.com%2Fpass%2FserviceLogin%3Fsid%3Dmi_eshopm_go%26callback%3Dhttps%253A%252F%252Fm.mi.com%252Fv1%252Fauthorize%252Fsso_callback%253Ffollowup%253Dhttps%25253A%25252F%25252Fm.mi.com%25252Fuser%2526sign%253DZWJiMDc5YWVjOTNkNGE5YzM4Mjc2Y2I1MGYxMmE0YmY4MmRkMDY1Ng%252C%252C%26bal%3Dtrue

7、到这里我们就可以总结如何触发的了
小米账号登录页下发的header里有x-auto-login的字段,这个字段的值其实是一个url加帐号类型。
Android的WebviewClient检测到这个header时,会自动调用 onReceivedLoginRequest。

Native处理

1、Webview回到到onReceivedLoginRequest接口,需要在接口内调用app内的账号检验机制。
2、检验成功,Natvie接口返回一个包含了认证信息的新的Url。
3、onReceivedLoginRequest接口内调用加了登录认证的新Url,mWebView.loadUrl(url);到此,webview自动登录完成。

你可能感兴趣的:(Android)