亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

新浪微博Android客戶端學習記錄四:完成OAuth認

系統 1818 0

本課主要講解了在Android 中如何完成用戶OAuth認證。

微博操作的流程圖:

新浪微博Android客戶端學習記錄四:完成OAuth認證

點擊了開始后:

新浪微博Android客戶端學習記錄四:完成OAuth認證

首先是獲取新浪微博的OAuth授權(WebViewActivity.java):

    package haiyang.project.iweibo.ui;

import haiyang.project.iweibo.R;
import haiyang.project.iweibo.util.AuthUtil;
import haiyang.project.iweibo.util.JavascriptInterface;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

/*
 * 新浪微博OAuth授權頁面
 */
public class WebViewActivity extends Activity{
	
	private WebView webView;
	private ProgressDialog progressDialog;
	private static final int CLOSE_DLG=1;
	private Handler handler;
	String url=null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		this.setContentView(R.layout.webview);
		
		url=AuthUtil.getAuthorizationURL();
		if(url==null){
			Toast.makeText(this, R.string.auth_url_empty, 3000).show();
			return;
		}
		
		init();
		load(url,webView);
		
		handler=new Handler(){
			public void handleMessage(android.os.Message msg) {
				if(msg.what==CLOSE_DLG){
					progressDialog.dismiss();
				}
			};
		};
	}
	
	public void init(){
		if(progressDialog==null){
			progressDialog=new ProgressDialog(this);
		}
		progressDialog.setMessage("正在加載");
		progressDialog.show();
		
		webView=(WebView) this.findViewById(R.id.wv_oauth); 
		webView.getSettings().setJavaScriptEnabled(true);
		webView.addJavascriptInterface(new JavascriptInterface(), "Methods");
		
		webView.setWebViewClient(new WebViewClient(){
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				load(url,webView);
				return true;
			}
			
			@Override
			public void onPageFinished(WebView view, String url) {
				if(url.equals("http://api.t.sina.com.cn/oauth/authorize")){
					String load="javascript:window.Methods.getPin('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>')";
					view.loadUrl(load);
					
					Intent intent=new Intent(WebViewActivity.this,AccessTokenActivity.class);
					startActivity(intent);
				}
				super.onPageFinished(view, url);
			}
			
		});
		
		webView.setWebChromeClient(new WebChromeClient(){

			public void onProgressChanged(WebView view, int newProgress) {
				if(newProgress==100){
					handler.sendEmptyMessage(CLOSE_DLG);
				}
				super.onProgressChanged(view, newProgress);
			}
		});
	}
	
	public void load(final String url,final WebView view){
		if(url==null||"".equals(url)){
			return;
		}
		new Thread(){
			public void run() {
				view.loadUrl(url);
			}
		}.start();
	}
}

  

獲取授權URL(AuthUtil.java)

    package haiyang.project.iweibo.util;

import weibo4android.Weibo;
import weibo4android.WeiboException;
import weibo4android.http.AccessToken;
import weibo4android.http.RequestToken;

public class AuthUtil {
	
	private static Weibo weibo;
	private static RequestToken requestToken;
	static{
		System.setProperty("weibo4j.oauth.consumerKey", Weibo.CONSUMER_KEY);
		System.setProperty("weibo4j.oauth.consumerSecret", Weibo.CONSUMER_SECRET);
		weibo=new Weibo();
	}
	
	/**
	 * 獲取授權URL
	 * @return
	 */
	public static String getAuthorizationURL(){
		try {
			requestToken=weibo.getOAuthRequestToken();
			return requestToken.getAuthorizationURL();
		} catch (WeiboException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
	public static void getAccessToken(String pin){
		try {
			AccessToken accessToken=requestToken.getAccessToken(pin);
			System.out.println("Access token: "+ accessToken.getToken());
			System.out.println("Access token secret: "+ accessToken.getTokenSecret());
			System.out.println("userID: "+accessToken.getUserId());
		} catch (WeiboException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}

  

獲取PIN值

    package haiyang.project.iweibo.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 獲取PIN值
 * @author Administrator
 *
 */
public class JavascriptInterface {
	
	//授權碼
	public static String PIN=null;

	public void getPin(String html){

		String pin=null;
		String reg="[0-9]{6}";
		
		Pattern pattern=Pattern.compile(reg);
		Matcher matcher=pattern.matcher(html);
	
		if(matcher.find()){//find each match in turn
			pin=matcher.group(0);//Access a submatch group
		}
		PIN=pin;
	}
}

  

獲取AccessToken

    package haiyang.project.iweibo.ui;

import haiyang.project.iweibo.util.AuthUtil;
import haiyang.project.iweibo.util.JavascriptInterface;
import android.app.Activity;
import android.os.Bundle;

public class AccessTokenActivity extends Activity{
	protected void onCreate(Bundle savedInstanceState) {
		
		String pin=JavascriptInterface.PIN;
		AuthUtil.getAccessToken(pin);
		super.onCreate(savedInstanceState);
	}
}

  

新浪微博Android客戶端學習記錄四:完成OAuth認證


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美午夜激情影院 | 99国内精品| 久久亚洲精品专区蓝色区 | 精品国产一区二区三区四 | 五月亭亭激情五月 | 久久人人爽人人爽人人片av不 | 国产一级片子 | 97在线视频免费 | 91九色露脸| 久久99国产精品成人 | 国产欧美日韩精品高清二区综合区 | 99热人人| 久久精品亚洲乱码伦伦中文 | 国产3344永久在线观看视频 | 成人看毛片 | 久久青草免费91线频观看站街 | 久久麻豆精品 | 日本精品久久久一区二区三区 | 国产一二三区在线 | 亚洲精品国产成人专区 | 五月天丁香六月欧美综合 | 国内精品免费久久久久妲己 | 九九在线精品视频 | 久久久99精品 | 毛片免费观看视频 | 狠狠色婷婷丁香六月 | 久久精品国产大片免费观看 | videosex久久麻豆 | 轻轻操在线观看 | 男女性高清爱潮视频免费观看 | 亚洲综合日韩 | 久久精品美女 | 色综合久久综合网 | 四虎网站入口 | 阿v天堂2017| 久久久久一级片 | 超清中文乱码精品字幕在线观看 | 青草视频在线观看免费资源 | 250pp久久新 26uuu精品一区二区 | 真人午夜a一级毛片 | 久久成人小视频 |