Android 调用网易微博开放API

转载 2012年03月25日 20:25:58
今天尝试了一下使用网易微博的开放平台,在Android上开发应用。把用于Java的SDK下回来之后,用起来还有一些问题。不过后来都解决了。
下面把整个过程记录在些,给有需要的朋友。

1、到http://open.t.163.com/wiki/index.php?title=Sdk#Java把SDK下载回来。  我们注意到,SDK包里是源代码。

2、到http://open.t.163.com/apps/new 新建一个应用,以得到咱这个应用的consumerKey和consumerSecret。

3、用Eclipse新建一个Android工程。注意Android版本要选2.X的。把第一步下回来的SDK中src文件夹下的内容放到Android工程的src目录下。

4、配置buildPath,将SDK中lib下的jar包添加到Android工程中。(如何配置buildPath就不详说了吧)

5、完成这些以后,HttpClient类中还是报错,找不到javax.activation.MimetypesFileTypeMap这个。这时,到http://www.jar114.com/ 这个网站去搜索一下javax.activation.MimetypesFileTypeMap是在哪个包里的,然后把包下载回来,再配置buildPath,把下回来的包也添加到工程中,这时就不再报错了。

6、SDK中,程序的入口是example包中的OAuthGetToken类,但咱现在是Android应用,入口在Activity里,所以咱把OAuthGetToken类中Main方法的方法体都拷到咱Android工程里的自己的Activity的OnCreate方法里。

7、上一步拷贝的代码中,咱要把
System.setProperty("tblog4j.oauth.consumerKey", "");
    System.setProperty("tblog4j.oauth.consumerSecret", "");
  这里设上第二步获取到的consumerKey和consumerSecret。

8、在AndroidManifest文件中添加访问互联网的权限设置。
<uses-permission android:name="android.permission.INTERNET"></uses-permission>

9、看起来差不多了吧,运行一下一堆的错误。我找了下原因,发现程序里面用到了Property文件,现在这个文件在src文件夹下,但在Android里,Property文件放在这里它是读不到的。所以把src下的t4j.properties文件放到assets里。这时我们访问的路径也要改。

10、找到t4j包下的Configuration类的81行。

   将loadProperties(defaultProperty, Configuration.class.getResourceAsStream("/" + t4jProps));

改成loadProperties(defaultProperty,Configuration.class.getResourceAsStream("/assets/" + t4jProps));

11、这个时候,我们来把调用方法的流程理一理。

第一步,生成一个验证我们应用的URL,容易想到,这个URL里携带了应用的标识信息

第二步,调用浏览器访问这个URL,在页面中,用户设置允许我们的应用访问他的账号。设置以后,163保存了这种允许的状态。

第三步,设置完成后,用户退出浏览器,回到我们的应用,我们的应用再通过调用SDK去163那里获得AccessToken。

第四步,使用AccessToken,我们就可以调用SDK中的任意方法了,譬如验证用户,获取微博列表等。

下面我完成的这个例子的效果是,一进到应用,点击按钮去验证,验证完后,用户退出浏览器,应用显示用户的微博用户名。

上代码:

import t4j.TBlog;
import t4j.TBlogException;
import t4j.data.User;
import t4j.http.AccessToken;
import t4j.http.RequestToken;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Welcome extends Activity implements OnClickListener{
	private String verifyURL;
	private TextView tvTip;
	private TextView tvUserName;
	private TBlog tblog;
	private RequestToken requestToken;
	// 标志是否已验证
	private int flag = 0;
	
    @Override
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        tvTip = (TextView) findViewById(R.id.tv_tip);
        tvUserName = (TextView) findViewById(R.id.tv_username);        
        Button btnVerify = (Button)findViewById(R.id.btn_verify);
        btnVerify.setOnClickListener(this);
        // 设置应用信息
        System.setProperty("tblog4j.oauth.consumerKey", "kKyj0SlCsEo1JSUk");
        System.setProperty("tblog4j.oauth.consumerSecret", "ISjF44L9ftKzhdRsLsPI4KK22YdfB55e");
        // 关掉debug,减少干扰信息
    	System.setProperty("tblog4j.debug", "false");
    	tvTip.setText("点击按钮去163验证应用");
    	tblog = new TBlog();
		// 获取RequestToken
        try {
			requestToken = tblog.getOAuthRequestToken();
		} catch (TBlogException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		// 获取验证URL
		verifyURL = requestToken.getAuthenticationURL();
	}
    
    // 当用记关闭浏览器回到应用时,onResume会被执行。
    // 由于onResume是常常会被执行的方法,所以设置flag标志位,保证只在验证回来时运行获取accessTocken
    protected void onResume(){
    	super.onResume();
    	if(flag == 1){
    		tvTip.setText("验证完毕,显示用户名");
	    	AccessToken accessTocken = null;
			try {
				accessTocken = tblog.getOAuthAccessToken(requestToken);
			} catch (TBlogException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}      
            
			// 可以将accessTocken保存起来,以后就不用再次获取了。
			tblog.setToken(accessTocken.getToken(), accessTocken.getTokenSecret());
			
			// 获取微博用户信息
			User user = null;
			try {
				user = tblog.verifyCredentials();
			} catch (TBlogException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			tvUserName.setText(user.getName());
			flag = 2;
    	}
    }

	@Override
	public void onClick(View arg0) {    
		
		// 调用浏览器打开URL
		Intent intent = new Intent();
		intent.setAction("android.intent.action.VIEW");
		Uri content_uri_browsers = Uri.parse(verifyURL);
		intent.setData(content_uri_browsers);
		intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");
		startActivity(intent);	
		flag = 1;
	}    
}

上图:






Android 调用网易微博开放API

今天尝试了一下使用网易微博的开放平台,在Android上开发应用。把用于Java的SDK下回来之后,用起来还有一些问题。不过后来都解决了。 下面把整个过程记录在些,给有需要的朋友。 1、到ht...
  • wujiaqi168
  • wujiaqi168
  • 2013年12月19日 19:12
  • 533

Android新浪微博开发(三)完结篇之调用新浪微博API实现信息展示

上一篇界面初步设计完之后就是获取微博的详情界面,包括所关注的用户的微博界面,评论界面,转发界面等等。 还是先上我的效果图吧。 ps:外观我参考aisen微博客户端,也是一个Material Des...
  • u011388551
  • u011388551
  • 2016年07月03日 16:25
  • 2391

Python调用微博API获取微博内容

一:获取app-key 和 app-secret     使用自己的微博账号登录微博开放平台(http://open.weibo.com/),在微博开放中心下“创建应用”创建一个应用,应用信息那些随便...
  • Gamer_gyt
  • Gamer_gyt
  • 2016年07月06日 16:43
  • 5504

如何利用新浪微博开放平台API获取新浪微博用户数据

首先登陆新浪微博开放平台http://open.weibo.com/,然后要注册成为开发者并且创建一个自己的应用,如下图所示,应用已经创建完成。 之后按照步骤首先要下载所需要的资源,点击新浪微博开放...
  • liukunIsTiancai
  • liukunIsTiancai
  • 2016年05月31日 12:29
  • 2674

使用python调用新浪微博API的小经历

Python标准库里有专门处理Json的标准库--json库。使用的是新浪微博Python SDK。 刚开始走了很多弯路,Python SDK的介绍页面内容有点少只是简单的介绍了如何使用这个SDK用新...
  • u010454729
  • u010454729
  • 2014年03月18日 16:52
  • 1133

新浪微博API简单调用

package com import java.io.File; import java.io.FileInputStream; import java.io.IOException; import ...
  • thl331860203
  • thl331860203
  • 2013年12月27日 18:23
  • 6078

微信小程序和用网易新闻api实现自己的微信小程序

每次因为看见别人写的新东西,自己就也想做一个,不知道是不是一个好习惯哎。微信小程序已经出来很久了,最近才开始学了一点皮毛,做了个小东西,用到了网易新闻接口,实现了小程序上的新闻浏览。但是很遗憾没有通过...
  • Picking_up_stones
  • Picking_up_stones
  • 2017年05月09日 23:31
  • 1868

Java调用 新浪微博API 接口发微博,逐项讲解,绝对清晰

转载自:http://www.myexception.cn/program/1930025.html Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰 最近要做个课程设计,使用...
  • qq_27231343
  • qq_27231343
  • 2016年01月14日 16:41
  • 4061

微博API接口的调用

本人大学狗一枚,学识尚浅,只为做笔记用,愿求大神们多多指教。楼主我就买了本社交网站数据挖掘与分析的书(python语言),==装逼的。。言归正传,由于书中设计到的社交网站是twitter,脸book,...
  • qq_20725287
  • qq_20725287
  • 2015年04月20日 19:01
  • 1502

python调用新浪微博API爬取用户的好友列表(windows 64位,pyCharm)

由于社交网络分析课题研究的需要,需要获得指定用户的好友列表数据,所以,调用新浪微博API进行实践。虽然新浪微博开放平台接口升级后只能获取当前登录用户的部分好友列表,无法满足研究需求,但还是以此记录初次...
  • Erin_HH
  • Erin_HH
  • 2016年12月09日 10:59
  • 989
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 调用网易微博开放API
举报原因:
原因补充:

(最多只允许输入30个字)