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

来源:互联网 发布:高斯卷积核 python 编辑:程序博客网 时间:2024/06/15 05:59

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

对于申请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 blocke.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 blocke.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;    }@Overrideprotected 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");     } }}    }


原创粉丝点击