腾讯微博开发平台开发,android平台一个微博的demo,OATUH2.0版本,教程一

首先,声明,这教程不一定能写完,我是安装自己写程序的进度写教程的。我刚做到这里,后序工作能不能做完,没有信心。

对于申请APP_KEY,APP_SECRET这些过程,就省略了,主要是讲下这些sdk要怎么用。其实,这些SDK的用法,在官网给的教程中,已经很好了。(觉得腾讯在这一点上,比新浪做的好很多。)

腾讯微博SDK下载地址:http://wiki.open.t.qq.com/index.php/%E7%A7%BB%E5%8A%A8%E5%BA%94%E7%94%A8%E6%8E%A5%E5%85%A5#Android.E5.BA.94.E7.94.A8

我们选择1.2版本的,因为1.2版本中支持oauth2.0认证方式了,比1.0相比,方便简洁的多了。

然后到这个页面,看最基本的搭建腾讯微博开发基础环境的过程:

http://wiki.open.t.qq.com/index.php/%E7%A7%BB%E5%8A%A8%E5%BA%94%E7%94%A8%E6%8E%A5%E5%85%A5/Android_SDK_V1.2

这个教程中提到的httpmime-4.1.3.jar和Android_SDK_v1.2.jar都是在刚下载的SDK中了,相比新浪,要好很多,至今我还搞不懂新浪的SDK要怎么用呢,教程上写的和实际下载到的SDK命名都是不一样的。

由于,我们开发的是手机客户端,所以,不存在server端的,选择oauth验证方式,我们选择的是ImplicitGrant方式授权。

在完成基础环境搭建的基础上,我们写程序。

先上demo程序的效果图:


非常简单的布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <TextView
        android:id="@+id/pane"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"
        tools:context=".MainActivity" />
    <Button
        android:id="@+id/request" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="请求授权"
        />
    <Button
        android:id="@+id/show" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="显示"
        />
    <Button
        android:id="@+id/save" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="保存配置"
        />
</LinearLayout>

源码:

public class MainActivity extends Activity {
	
	private OAuthV2 oAuth;
	TextView pane = null;
	Button button = null;
	Button butshow = null;
	Button butsave = null;
	String response = null;
	
	String access_key = null;
	String openid = null;
	String openkey = null;
	String expin = null;
	String refreshtoken = null;
	
	final String APP_KEY = "写自己应用的app_key";
	final String APP_SECRET = "写自己应用的app_secret";
	
	final String FILE = "users";
	SharedPreferences shared = null;
	SharedPreferences.Editor editor = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        this.pane = (TextView)this.findViewById(R.id.pane);
        this.button = (Button)this.findViewById(R.id.request);
        this.butshow = (Button)this.findViewById(R.id.show);
        this.butsave = (Button)this.findViewById(R.id.save);
        
        MainActivity.this.shared = MainActivity.this.getSharedPreferences(MainActivity.this.FILE, MODE_PRIVATE);
        MainActivity.this.access_key = MainActivity.this.shared.getString("access_key:", "nothing");
        MainActivity.this.openid = MainActivity.this.shared.getString("openid", "nothing");
        MainActivity.this.openkey = MainActivity.this.shared.getString("openkey:", "nothing");
        MainActivity.this.expin = MainActivity.this.shared.getString("expires_in", "nothing");
        MainActivity.this.refreshtoken = MainActivity.this.shared.getString("refreshtoken", "nothing");
        Log.i("key:", access_key);
        
        this.oAuth = new OAuthV2 ("http://user.qzone.qq.com/915522070/infocenter#!app=216&url=http%3A%2F%2Fz.t.qq.com%2Fmb%2Fqzone%2Findex.html");
        this.oAuth.setClientId(this.APP_KEY);
        this.oAuth.setClientSecret(this.APP_SECRET);
        MainActivity.this.oAuth.setAccessToken(access_key);
        MainActivity.this.oAuth.setOpenid(openid);
        MainActivity.this.oAuth.setOpenkey(openkey);
        MainActivity.this.oAuth.setExpiresIn(expin);
        MainActivity.this.oAuth.setRefreshToken(refreshtoken);
        
        
        
        this.button.setOnClickListener(new OnClickListener () {

			public void onClick(View arg0) {
				Intent intent = new Intent (MainActivity.this,
						 OAuthV2AuthorizeWebView.class);
				intent.putExtra("oauth", oAuth);  
				startActivityForResult(intent, 1);  //请设置合适的requsetCode
			}
        	
        });
        this.butshow.setOnClickListener(new OnClickListener () {

			public void onClick(View v) {
				
				MainActivity.this.shared = MainActivity.this.getSharedPreferences(MainActivity.this.FILE, MODE_PRIVATE);
		        MainActivity.this.access_key = MainActivity.this.shared.getString("access_key:", "nothing");
		        MainActivity.this.openid = MainActivity.this.shared.getString("openid", "nothing");
		        MainActivity.this.openkey = MainActivity.this.shared.getString("openkey:", "nothing");
		        MainActivity.this.expin = MainActivity.this.shared.getString("expires_in", "nothing");
		        
		        MainActivity.this.oAuth.setAccessToken(access_key);
		        MainActivity.this.oAuth.setOpenid(openid);
		        MainActivity.this.oAuth.setOpenkey(openkey);
		        MainActivity.this.oAuth.setExpiresIn(expin);
		        MainActivity.this.oAuth.setRefreshToken(refreshtoken);
		        
				//UserAPI userAPI=new UserAPI(OAuthConstants.OAUTH_VERSION_1);
				//若调用2.0 API 以上一行请换为
				UserAPI userAPI=new UserAPI(OAuthConstants.OAUTH_VERSION_2_A);

				try {
					response=userAPI.info(oAuth, "json");
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}//获取用户信息
				Log.i("info:", response);
				Log.i("status:", MainActivity.this.oAuth.getStatus() + "");
				for (int i = 0; i < MainActivity.this.oAuth.getCommonParamsList().size(); i++)
				Log.i("params:", MainActivity.this.oAuth.getCommonParamsList().get(i).getValue());
				/*try {
					WeiboParser wp = new WeiboParser (response);
					MainActivity.this.pane.setText(wp.getContent() + "   显示");
				} catch (JSONException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}*/
				userAPI.shutdownConnection();
			}
        	
        });
        this.butsave.setOnClickListener(new OnClickListener () {

			public void onClick(View arg0) {
				MainActivity.this.shared = MainActivity.this.getSharedPreferences(MainActivity.this.FILE, MODE_PRIVATE);
				MainActivity.this.editor = shared.edit();
				editor.putString("access_key:", MainActivity.this.oAuth.getAccessToken());
				editor.putString("openid", MainActivity.this.oAuth.getOpenid());
				editor.putString("openkey", MainActivity.this.oAuth.getOpenkey());
				editor.putString("expires_in", MainActivity.this.oAuth.getExpiresIn());
				editor.putString("refreshtoken", MainActivity.this.oAuth.getRefreshToken());
				editor.commit();
			}
        });
}
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode==1) {  //对应之前设置的的myRequsetCode
		     if (resultCode==OAuthV2AuthorizeWebView.RESULT_CODE) {
		         //取得返回的OAuthV2类实例oAuth
		         oAuth=(OAuthV2) data.getExtras().getSerializable("oauth");
		     }
		 }
	}
    
}


猜你喜欢

转载自blog.csdn.net/boybeak/article/details/8125804