当前位置: 移动技术网 > IT编程>移动开发>Android > Android实现授权访问网页的方法

Android实现授权访问网页的方法

2019年07月24日  | 移动技术网IT编程  | 我要评论

李靖斩龙,大桥未久快播,最后的99天演员表

本文实例讲述了android授权访问网页的实现方法,即使用webview显示oauth version 2.a implicitgrant方式授权的页,但是对于移动终端不建议使用authorize code grant方式授权

具体功能代码如下所示:

import android.annotation.suppresslint;
import android.app.activity;
import android.content.intent;
import android.graphics.bitmap;
import android.net.http.sslerror;
import android.os.bundle;
import android.util.log;
import android.webkit.sslerrorhandler;
import android.webkit.websettings;
import android.webkit.webview;
import android.webkit.webviewclient;
import com.tencent.weibo.oauthv2.oauthv2;
import com.tencent.weibo.oauthv2.oauthv2client;
/**
 * 使用webview显示oauth version 2.a implicitgrant方式授权的页
 * (移动终端不建议使用authorize code grant方式授权
 * 本类使用方法
 * 调用本类的地方请添加如下代码
 * //请将oauthv2activity改为类的类名
 * intent intent = new intent(oauthv2activity.this, oauthv2authorizewebview.class);
 * intent.putextra("oauth", oauth); //oauth为oauthv2类的实例,存放授权相关信??
 * startactivityforresult(intent, myrrequestcode); //请设置合适的requsetcode
 * 重写接收回调信息的方
 * if (requestcode==myrrequestcode) { //对应之前设置的的myrequsetcode
 *   if (resultcode==oauthv2authorizewebview.result_code) {
 *     //取得返回的oauthv2类实例oauth
 *     oauth=(oauthv2) data.getextras().getserializable("oauth");
 *   }
 * }
 * @see android.app.activity#onactivityresult(int requestcode, int resultcode, intent data)
 */
public class mywebview extends activity {
  public final static int result_code = 2;
  private oauthv2 oauth;
  private final string tag = "mywebview";
 private webview mwebview;
  @suppresslint("newapi")
 @override
  public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.webview_qq);
    mwebview = (webview) findviewbyid(r.id.qq_mywebview);;
    mwebview.setverticalscrollbarenabled(false);
 mwebview.sethorizontalscrollbarenabled(false);
 intent intent = this.getintent();
    oauth = (oauthv2) intent.getextras().getserializable("oauth");
    string urlstr = oauthv2client.generateimplicitgranturl(oauth);
    websettings websettings = mwebview.getsettings();
    websettings.setjavascriptenabled(true);
    websettings.setsupportzoom(true);
    mwebview.requestfocus();
    mwebview.loadurl(urlstr);
    system.out.println(urlstr.tostring());
    log.i(tag, "webview starting....");
    webviewclient client = new webviewclient() {
    /* 回调方法,当页面加载时执行*/
      @override
      public void onpagestarted(webview view, string url, bitmap favicon) {
        log.i(tag, "webview onpagestarted...");
        log.i(tag, "url = " + url);
        if (url.indexof("access_token=") != -1) {
          int start=url.indexof("access_token=");
          string responsedata=url.substring(start);
          oauthv2client.parseaccesstokenandopenid(responsedata, oauth);
          intent intent = new intent();
          intent.putextra("oauth", oauth);
          setresult(result_code, intent);
          finish();
        }
        super.onpagestarted(view, url, favicon);
        log.i(tag, "999999999");
      }
      /* todo android2.2及以上版本才能使用该方法,目前https://open.t.qq.com中存在http资源会引起sslerror,待网站修正后可去掉该方*/
 public void onreceivedsslerror(webview view, sslerrorhandler handler, sslerror error) {
        if ((null != view.geturl()) && (view.geturl().startswith("https://open.t.qq.com"))) {
          handler.proceed();// 接受证书
        } else {
          handler.cancel(); // 默认的处理方式,webview变成空白
        }
        // handlemessage(message msg); 其他处理
      }
    };
    mwebview.setwebviewclient(client);
  }
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网