腾讯微博开发平台开发,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"); } }} }
- 腾讯微博开发平台开发,android平台一个微博的demo,OATUH2.0版本,教程一
- 腾讯微信公众平台开发教程(一)
- 腾讯微博开放平台授权教程(一)
- java.net.SocketTimeoutException: Read timed out 的解决办法 android平台 腾讯微博开发
- 微信公众平台开发教程(一)
- 腾讯微博开放平台开发吐槽
- 新浪微博开发平台接入流程(2)---SDK Demo
- 微信开放平台公众号第三方平台开发 教程一 平台介绍
- 微信开放平台公众号第三方平台开发 教程一 平台介绍
- 微信开放平台公众号第三方平台开发 教程一 平台介绍
- 调试腾讯微博开发平台鉴权和API的一点体会
- 在Android使用新浪微博的开发平台API
- 腾讯微博开放平台
- 腾讯微博开放平台
- 腾讯 开发 平台 开发 wiki
- 腾讯微博Android客户端实例开发教程by若水
- Android 平台开发一个输入法
- 微信公众平台开发Python 版本
- P-state
- ArcEngine利用ITopologicalOperator实现裁剪功能
- Java_乔晓松_Cookie技术--会话管理
- qt-embedded-linux-opensource-src-4.5.3在飞凌2440上的成功移植
- Linux 系统 Shell中的cut命令
- 腾讯微博开发平台开发,android平台一个微博的demo,OATUH2.0版本,教程一
- 用Typedef构造复合类型
- Linux 系统中的 文档查看 命令
- 10-29
- 那年,进入所谓大公司的感受!
- C语言常见问题汇总
- could not open java jre6 lib amd64 jvm.cfg
- 人生是时间的微积分
- sed 命令全解析