• [Android] 使用Webview进行OAUTH


    1. 源起

        最近在弄Google登录,Google登录要求手机上必须按照Google Play Service,有些手机比如小米,没有Google Play Servcie,因此,有必要实现一个webview的登录方式。
        Google的跳转由Server端进行了配置,我们只需要请求一个URL,跳转到Google 的授权页面,授权后,跳转到Server那边,Server取得用户信息,然后将用户信息返回到一个地址上。最终只需要解析返回的页面结果即可。

    2. 代码实现

        permission
        <uses-permission android:name="android.permission.INTERNET" />

         清空cookie
        try {
            CookieSyncManager.createInstance(this);
            CookieManager.getInstance().removeAllCookie();
        } catch (Exception e) {
            Log.d("Google Login", "Clear cookie failed");
        }

         最终的页面检测
        WebView webview = (WebView) findViewById(R.id.login);
        webview.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            if (url.contains(succeedUrl))
                Log.d("Google Login", "onPageFinished, url = " + url);
            }
        });
        webview.loadUrl(requestUrl);
         页面内容的获取,需要用JS来调用JAVA代码
        class Handler {
             @JavascriptInterface  // api level17要加这个,不加的话也不报错,就是不调用,折腾了1个半小时啊,泪流满面。
            public void show(String data) {
                Log.d("Google Login", "handler, show, data = " + data);
                System.out.println("data = " + data);
            }
        }
        webview.getSettings().setJavaScriptEnabled(true); // 设置JS可用
        webview.addJavascriptInterface(new Handler(), "handler"); // 注册Handler对象,并且命名为handler
        public void onPageFinished(WebView view, String url) {
            if (url.contains(succeedUrl))
                Log.d("Google Login", "onPageFinished, url = " + url);
                view.loadUrl("javascript:window.handler.show(document.body.innerHTML);"); 
            }
        });

    3. 参考资料

        Android中如何获得webView中的内容     http://veikr.com/201106/android_webview_content-html.html
  • 相关阅读:
    centos下tomcat自启动
    navcat12 windows 下载安装
    mysql8 windows 下载安装
    redis windows下载安装
    python json.dumps()函数输出json格式,使用indent参数对json数据格式化输出
    Python的安装图解
    spark入门系列教程二——简单入门实例
    Spark入门系列教程一 —— Spark2.3.1 集群安装
    css在文字两边加线,文字居中效果——实战应用
    a标签中对于邮箱和电话的用法mark
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3206594.html
Copyright © 2020-2023  润新知