使用webview调用第三方登录时候遇到的坑

最近项目中有个需求,调用第三方提供的登陆接口登陆项目,其中需要对第三方登录的webview返回值进行拦截


1、首先,使用webview加载第三方登录的网页,

webView.loadUrl(url);

2、webview设置调用自定义的webviewclient,

webView.setWebViewClient(new WebViewClient(){
    @Override
    public void onPageFinished(WebView view, String url) {
        mProgressBar.setVisibility(View.GONE);
        super.onPageFinished(view, url);
    }
}
3、重写shouldoverload那个方法,用来拦截登陆的返回值

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if(url.contains(redirect_uri)) {
        //这里对拦截出来的url进行处理,获取url中我们需要的code
        return true;
    }
    return super.shouldOverrideUrlLoading(view, url);
}
这里有个注意点,只有当点击第2步webview加载完后的登陆时候,这里拦截才有效,才能拦截到我们想要的内容

4、拦截后进行拼接,再次请求,这里就可以使用http请求进行处理了。




你可能感兴趣的:(webview,拦截请求)