正文  第三方集成 > OAuth >

Android中腾讯微博OAuth认证-获取RequestToken

第一步:下载腾讯微博SDK第二步:创建Android项目,并配置Build Path,加入SDK中httpmime-4.1.3.jar、Android_SDK_v1.2.jar两个库文件第三步:编写代码,由于代码里面已经有注释,就不做过多说明:package com......

第一步:下载腾讯微博SDK

第二步:创建Android项目,并配置Build Path,加入SDK中httpmime-4.1.3.jar、Android_SDK_v1.2.jar两个库文件

第三步:编写代码,由于代码里面已经有注释,就不做过多说明:

 

package com.ns.wb;

import com.tencent.weibo.oauthv1.OAuthV1;
import com.tencent.weibo.oauthv1.OAuthV1Client;
import com.tencent.weibo.utils.QHttpClient;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class TecentWeiboActivity extends Activity {
    //声明控件变量
    private Button requsetButton = null;
    private TextView requestText = null;
    private OAuthV1 oAuth;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //初始化OAuth对象
        //参数为回调地址,移动应用可以为“null”
        oAuth=new OAuthV1(Constants.OAUTH_CALLBACK_URL);
        //参数为你在腾讯微博开放平台创建的应用的APP_KEY
        oAuth.setOauthConsumerKey(Constants.APP_KEY);
        //你的应用的APP_SECRET
        oAuth.setOauthConsumerSecret(Constants.APP_SECRET);
        
        //获取控件对象
        requsetButton = (Button)findViewById(R.id.buttonRequest);
        //绑定点击事件监听器
        requsetButton.setOnClickListener(listener);
        requestText = (TextView)findViewById(R.id.requestText);
        //关闭OAuthV1Client中的默认开启的QHttpClient。
      	OAuthV1Client.getQHttpClient().shutdownConnection();
      	//为OAuthV1Client配置自己定义QHttpClient。
      	OAuthV1Client.setQHttpClient(new QHttpClient());
        
    }
    
    OnClickListener listener = new OnClickListener() {
		
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.buttonRequest:
				//从 Android 2.3 开始提供了一个新的类 StrictMode,
				//该类可以用于捕捉发生在应用程序主线程中耗时的磁盘、
				//网络访问或函数调用,可以帮助开发者改进程序,
				//使主线程处理 UI 和动画在磁盘读写和网络操作时变得更平滑,
				//避免主线程被阻塞。
				//所以我们需要新起一个线程来获取访问令牌
				new GetRequestTokenTask().execute();
				break;

			default:
				break;
			}
		}
	};
	
	class GetRequestTokenTask extends AsyncTask{

		@Override
		protected Void doInBackground(Void... params) {
			try {
				//向腾讯微博开放平台请求获得未授权的Request_Token
				 oAuth = OAuthV1Client.requestToken(oAuth);
			} catch (Exception e) {
				e.printStackTrace();
			}
			return null;
		}
		
		@Override
		protected void onPostExecute(Void result) {
			 requestText.append("\nrequest_token-->:"+oAuth.getOauthToken()+ "\nrequest_token_secret:\n"+oAuth.getOauthTokenSecret());
		}
	}
	
}

 

 

另外在SDK的源码中有Demo程序,里面有详细的OAuth认证过程,有兴趣的同学可以看一下。