Android上新浪微博SDK的使用方法介绍

作者:朱凌飞


本文介绍了如何在Android程序中使用新浪微博提供的AndroidSDK,具体新浪API查询请到http://open.weibo.com/查看。


微博Android平台SDK为第三方微博应用提供了文档易用的微博API调用服务,使第三方客户端无需了解复杂的验证,API调用过程。并可以实现分享到微博的功能,可以分享文字,或者多媒体信息到内置的分享页面,并发送到微博。


首先我们需要在新浪微博开放平台上进行注册,之后需要创建一个新的应用,并且需要记下应用的APP key,App Secret Key以及设置应用的回调页以便我们在程序中进行使用。此外,还需要在应用的高级信息里添加测试用户的uid,切记切记,否则会出现登陆不成功等怪现象。


接着我们下载微博提供的Android上的SDK,下载地址在这里http://open.weibo.com/wiki/SDK,选择AndroidSDK进行下载即可。

使用方法:


首先将下载的sdk进行解压,并将其导入到eclipse中,接着在你需要使用sdk的android工程中点击右键,属性,设置library属性,选中刚才导入的weibosdk即可。如图所示





然后在你的工程的Manifest文件中,加入以下权限:


<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>


这样我们就能使用weibosdk了


建立工程以后如何在代码中使用weiboAPI呢,下面就由我来为大家介绍使用方法:

首先在你需要使用微博的Activity中加入以下代码:


Weibo weibo = Weibo.getInstance();

weibo.setupConsumerConfig(Constants.CONSUMER_KEY,Constants.CONSUMER_SECRET);

weibo.setRedirectUrl("Your URLhere");

    weibo.authorize(this,

              listener);

注意代码中的Constants.CONSUMER_KEY,Constants.CONSUMER_SECRET即是文章开头介绍的在微博上创建的应用里的两个key,setRedirectUrl中的内容即是在应用中设置的回调页。


Listener则是在进行登陆授权后对执行结果进行处理的Litener,代码如下


public class AuthDialogListener implements WeiboDialogListener {
	private Activity context;
	private String content;
	private String file;
	private float lat;
	private float lon;
	private static boolean isOver=true;
	public AuthDialogListener(Activity context,String content,String file,float lat,float lon){
		this.context= context;
		this.content=content;
		this.file=file;
		this.lat=lat;
		this.lon=lon;
	}
	@Override
	public void onComplete(Bundle values) {
		String token = values.getString("access_token");
		String expires_in = values.getString("expires_in");
		String oauth_verifier = values.getString("oauth_verifier");
		AccessToken accessToken = new AccessToken(token, Constants.CONSUMER_SECRET);
		accessToken.setExpiresIn(expires_in);
		accessToken.setVerifier(oauth_verifier);
		Weibo.getInstance().setAccessToken(accessToken);
		try {
			if (isOver) {
				isOver=false;
				share2weibo(this.content,null,listener,lat,lon);
			}
			
		} catch (WeiboException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void onError(DialogError e) {
		Toast.makeText(context.getApplicationContext(),
				"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();
	}

	@Override
	public void onCancel() {
		Toast.makeText(context.getApplicationContext(), "Auth cancel",
				Toast.LENGTH_LONG).show();
	}

	@Override
	public void onWeiboException(WeiboException e) {
		Toast.makeText(context.getApplicationContext(),
				"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
				.show();
	}
	
	private void share2weibo(String content,String file,RequestListener listener,float lat , float lon) throws WeiboException {
		Weibo weibo = Weibo.getInstance();
		WeiboParameters params= new WeiboParameters();
        params.add("access_token", weibo.getAccessToken().getToken());
        params.add("status", content);
        params.add("lat", String.valueOf(lat));
        params.add("long", String.valueOf(lon));
        String url = Weibo.SERVER + "statuses/update.json";
        if (file!=null&&!file.equalsIgnoreCase("")) {
        	 params.add("pic", file);
        	 url =  Weibo.SERVER + "statuses/upload.json";
		}
        AsyncWeiboRunner runner = new AsyncWeiboRunner(weibo);
        runner.request(this.context, url, params,Utility.HTTPMETHOD_POST,listener);
        
        
	}
	RequestListener listener= new  RequestListener() {
		
		@Override
		public void onIOException(IOException e) {
			isOver=true;
			Toast.makeText(context, "RequestListener "+e.getMessage(), Toast.LENGTH_LONG).show();	
		}
		
		@Override
		public void onError(WeiboException e) {
			isOver=true;
			Toast.makeText(context, "RequestListener "+e.getMessage(), Toast.LENGTH_LONG).show();	
		}
		
		@Override
		public void onComplete(String response) {
			isOver=true;
			Toast.makeText(context, "Success!", Toast.LENGTH_LONG).show();	
		}
	};
} 


需要完成WeiboDialogListener接口中的方法,分别是onComplete,OnError,

OnCancel,OnWeiboException。其中Oncomplete是在微博登陆授权成功后会执行的方法,在这个方法中,你可以调用你想要的功能如发表微博,转发,评论等。使用的代码可参看以下代码:


	Weibo weibo = Weibo.getInstance();
		WeiboParameters params= new WeiboParameters();
        params.add("access_token", weibo.getAccessToken().getToken());
        params.add("status", content);
        params.add("lat", String.valueOf(lat));
        params.add("long", String.valueOf(lon));
        String url = Weibo.SERVER + "statuses/update.json";
AsyncWeiboRunner runner = new AsyncWeiboRunner(weibo);
runner.request(this.context,url,params,Utility.HTTPMETHOD_POST,listener);


其中params是调用weibo api中需要的具体参数,可根据需要进行添加

AsyncWeiboRunner 是用来执行具体请求的类,根据你设定的参数发起请求。注意这里又有一个listerner,而这个listener是对发起请求后的结果进行处理的回调类,

RequestListener listener= new  RequestListener()

    需要复写的方法有OnIOException,onError,onComplete,这样可以清楚地对各种情况进行处理。

    这样在程序中就可以使用新浪微博 android sdk了。



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值