由于新浪微博开放平台预计2012年9月份停止旧版接口和OAuth1.0的使用,此次我们的Android客户端v1.5.3已经更新并使用新版接口和OAuth2.0的SDK。
集成到App的效果图:
下面将新浪微博Android SDK的集成分享给大家。
下载SDK
下载地址: http://open.weibo.com/wiki/SDK
我们找到Android SDK,点击下载。
导入源码包
将com.weibo.net包下面java文件导入项目的src目录下,如下图:
注意:这里我没有导入ShareActivity.java文件以及ShareActivity类里面所需的资源文件。因为我们的App只需一键分享即可,不需要用户去编辑分享的内容。而ShareActivity类实际是个Activity类,涉及到布局等,所以我们这里没有导入。
当然,你可以根据自己的需求,看是否需要导入。
导入相关资源
1、将dialog_bg.9.png图片文件导入到res/drawable-hdpi目录下;
2、将color.xml, dimens.xml, style.xml导入到res/values目录下;
在写导入图片文件的时候,又让我想起SDK中drawable-hdpi目录下一张"刀塔(dota)"的图片。
添加权限
我们需要在AndroidManifest.xml中添加以下权限:
1 |
< uses-permission android:name = "android.permission.INTERNET" ></ uses-permission > |
2 |
< uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" ></ uses-permission > |
3 |
< uses-permission android:name = "android.permission.ACCESS_WIFI_STATE" ></ uses-permission > |
4 |
< uses-permission android:name = "android.permission.CHANGE_WIFI_STATE" ></ uses-permission > |
5 |
< uses-permission android:name = "android.permission.WRITE_APN_SETTINGS" ></ uses-permission > |
在新浪微博SDK提供的例子里面是需要以上5个权限的,其实我测试只要前面3个就OK了。
-----------------------以上热身活动都完成后,开始进入主题了----------------------------
调用新浪微博的SDK,首先你要到新浪微博开放平台申请的你的App的key,secret。同时,你还要进入“我的应用--应用详情--应用信息--高级信息--授权设置--应用回调页”设置你的回调页地址。
以下假设你已经有了CONSUMER_KEY, CONSUMER_SECRET, REDIRECT_URL。
首次授权登录
1、初始化weibo
1 |
private static final String
CONSUMER_KEY = "your
app_key" ; |
2 |
private static final String
CONSUMER_SECRET = "your
app_secret" ; |
3 |
private static final String
REDIRECT_URL = "your
redirect_url" ; |
5 |
Weibo
weibo = Weibo.getInstance(); |
6 |
weibo.setupConsumerConfig(CONSUMER_KEY,
CONSUMER_SECRET); |
7 |
weibo.setRedirectUrl(REDIRECT_URL); |
2、弹出对话框,并授权登录
01 |
weibo.authorize(cont, new WeiboDialogListener()
{ |
03 |
public void onComplete(Bundle
values) { |
06 |
String
token = values.getString(Weibo.TOKEN); |
07 |
String
expires_in = values.getString(Weibo.EXPIRES); |
08 |
accessToken
= new AccessToken(token,
CONSUMER_SECRET); |
09 |
accessToken.setExpiresIn(expires_in); |
13 |
weibo.shareToweibo(cont,
accessToken.getToken(), accessToken.getSecret(), shareMessage); |
21 |
public void onError(DialogError
e) { |
22 |
Toast.makeText(context, "授权失败
: " +
e.getMessage(), Toast.LENGTH_LONG).show(); |
25 |
public void onCancel()
{ |
29 |
public void onWeiboException(WeiboException
e) { |
30 |
Toast.makeText(context, "授权异常
: " +
e.getMessage(), Toast.LENGTH_LONG).show(); |
这里说明下,登录成功后会调用onComplete()方法,在方法里你需要保存AccessToken,同时分享微博。
注意:weibo.shareToweibo()方法是我自己定义的,方便下次直接根据保存的AccessToken分享微博。
这里我把自己写的shareToweibo()方法代码贴出:
05 |
public boolean shareToweibo(Activity
activity, String accessToken, String tokenSecret, String content) throws WeiboException
{ |
06 |
Utility.setAuthorization( new Oauth2AccessTokenHeader()); |
07 |
WeiboParameters
bundle = new WeiboParameters(); |
08 |
bundle.add( "source" ,
APP_KEY); |
09 |
bundle.add( "status" ,
content); |
10 |
String
url = SERVER + "statuses/update.json" ; |
11 |
if (mAccessToken
== null ){ |
12 |
mAccessToken
= new AccessToken(accessToken,
tokenSecret); |
14 |
request(activity,
url, bundle, Utility.HTTPMETHOD_POST, mAccessToken); |
实际调用上面方法的时候,需要try-catch一下,只要没有获取到WeiboException异常,就是分享成功了。
一键分享
下面说明一下,以后使用一键分享时,不需要再登录,只需要:
1、初始化weibo(同上)
2、获取保存的AccessToken
3、调用shareToweibo()方法
OK,就这么简单。