Android新浪微博分享实现
注册 新浪开放平台的开发者账户,创建测试应用,得到应用的AppKey和设定一个用来发布的官方地址下载示例,引入sdk,具体的方式开发文档中有详细说明。//需要引入的包
import com.weibo.sdk.android.Oauth2AccessToken;
import com.weibo.sdk.android.Weibo;
import com.weibo.sdk.android.WeiboAuthListener;
import com.weibo.sdk.android.WeiboDialogError;
import com.weibo.sdk.android.WeiboException;
import com.weibo.sdk.android.api.StatusesAPI;
import com.weibo.sdk.android.keep.AccessTokenKeeper;
import com.weibo.sdk.android.net.RequestListener;
private static HiWorld hiWorld = null;// 新浪分享 file是路径public static void shareSina(final String mContent, final String filePath) {// public static void shareSina(String mContent, String filePath) {hiWorld.runOnUiThread(new Runnable() {public void run() {Log.e("share sina", "okey enter share");// if(filePath == null){// filePath = "";// }Log.e("share sina mContent", "" + mContent.trim().toString()+ "");Log.e("share sina filePath", "" + filePath.trim().toString()+ "");hiWorld.mContent = mContent + System.currentTimeMillis();hiWorld.filePath = filePath;mWeibo = Weibo.getInstance(CONSUMER_KEY, REDIRECT_URL);Log.e("weibo instance", mWeibo.toString());mWeibo.authorize(hiWorld, hiWorld.new AuthDialogListener());Log.e("weibo authorize", "okey ? weibo authorize");}});}
// 新浪微博认证监听class AuthDialogListener implements WeiboAuthListener {@Overridepublic void onComplete(Bundle values) {String token = values.getString("access_token");String expires_in = values.getString("expires_in");Log.e("AuthDialogListener", "onComplete token:" + token+ ", expires_in:" + expires_in);HiWorld.accessToken = new Oauth2AccessToken(token, expires_in);if (HiWorld.accessToken.isSessionValid()) {String date = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new java.util.Date(HiWorld.accessToken.getExpiresTime()));AccessTokenKeeper.keepAccessToken(HiWorld.this, accessToken);Toast.makeText(HiWorld.this, "认证成功", Toast.LENGTH_SHORT).show();// 发博分享StatusesAPI api = new StatusesAPI(HiWorld.accessToken);Log.e("weibo api", "okey ? weibo api");// Log.e("accessToken.getToken()",accessToken.getToken());if (!TextUtils.isEmpty(accessToken.getToken())) {if (TextUtils.isEmpty(mContent)) {Toast.makeText(hiWorld, "请输入内容!", Toast.LENGTH_LONG).show();return;}if (!TextUtils.isEmpty(filePath)) {api.upload(mContent, filePath, "", "",hiWorld.new SinaWBUpdateListener());Toast.makeText(hiWorld, "api访问请求已执行,请等待结果",Toast.LENGTH_LONG).show();hiWorld.finish();} else {// Just update a text weibo!api.update(mContent, "", "",hiWorld.new SinaWBUpdateListener());Toast.makeText(hiWorld, "api访问请求已执行", Toast.LENGTH_LONG).show();}}}}@Overridepublic void onError(WeiboDialogError e) {Toast.makeText(hiWorld.getApplicationContext(),"Auth error : " + e.getMessage(), Toast.LENGTH_LONG).show();}@Overridepublic void onCancel() {Toast.makeText(hiWorld.getApplicationContext(), "Auth cancel",Toast.LENGTH_LONG).show();}@Overridepublic void onWeiboException(WeiboException e) {Toast.makeText(hiWorld.getApplicationContext(),"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG).show();}}// 新浪微博更新监听class SinaWBUpdateListener implements RequestListener {public void onComplete(String response) {runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(HiWorld.this, R.string.weibosdk_send_sucess,Toast.LENGTH_LONG).show();}});finish();}public void onIOException(IOException e) {}public void onError(final WeiboException e) {System.out.println(e);runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(HiWorld.this,String.format(HiWorld.this.getString(R.string.weibosdk_send_failed)+ ":%s", e.getMessage()),Toast.LENGTH_LONG).show();Log.e("e.getMessage()", e.getMessage()+ " ,hiWorld.filePath:" + hiWorld.filePath);}});}}
参考的官方文档:
1. Weibo: 微博API 接口类,对外提供weiboapi的调用,包括登录,API调用,微博分享等功能。
2. Oauth2AccessToken:封装了“access_token”,“expires_in”,"refresh_token",并提供了
他们的管理功能
3. Utility:工具类,提供了url 的encode,decode方法。
4. AsyncWeiboRunner:微博api异步执行类,封装了回调接口,通过创建线程来调用Weibo中的接口方法。
5. HttpManager: 负责与服务器进行通讯的类,封装了GET、POST请求方式,并对外提供图片上传等功能
6. WeiboAPI: 该类及其子类封装了新浪微博对外提供的api接口方法。
7. WeiboException:微博异常封装类,封装了微博的各个异常。
8. SsoHandler:单点登录 认证类,对外提供了sso登录认证的方法。
获取weibo对象 |
|
接口名称 |
|
com.weibo.sdk.android.Weibo.getInstance(String appKey, String redirectUrl) |
|
参数名称 |
作用 |
appKey |
|
redirectUrl |
|
返回结果 |
|
Weibo实例对象 |
授权认证
授权认证 |
|
接口名称 |
|
com.weibo.sdk.android.Weibo.authorize(Context context, WeiboAuthListenerlistener) |
|
参数名称 |
作用 |
context |
当前activity对象,用于获取当前网络状态,弹出对话框等。 |
listener |
授权对话框回调接口。处理授权完成、授权失败、授权取消等事件 |
接口名称 |
|
com.weibo.sdk.android. Oauth2AccessToken (String accessToken, String expires_in) |
|
参数名称 |
作用 |
accessToken |
通过认证后从服务器获取到的访问令牌 |
expires_in |
认证有效期 |
返回结果 |
|
Oauth2AccessToken实例对象 |
StatusesAPI 构造函数 |
|
接口名称 |
|
com.weibo.sdk.android.api.StatusesAPI(Oauth2AccessTokenaccesssToken) |
|
参数名称 |
作用 |
accesssToken |
Oauth2AccessToken对象 |
分享文字到微博 |
|
接口名称 |
|
com.weibo.sdk.android.api.StatusesAPI.update(String content, String lat, String lon, RequestListener listener) |
|
参数名称 |
作用 |
content |
要分享的微博内容,限140个字 |
Lat、lon |
经纬度,格式为:ddd.ddddd °【度 . 度】格式 |
listener |
用于异步返回服务器的返回结果 |
分享文字和图片到微博 |
|
接口名称 |
|
com.weibo.sdk.android.api.StatusesAPI.upload(String content, String file, String lat, String lon, RequestListener listener) |
|
参数名称 |
作用 |
content |
要分享的微博内容,限140个字 |
file |
要上传的照片本地所在路径 |
Lat、lon |
经纬度,格式为:ddd.ddddd °【度 . 度】格式 |
listener |
接口名称 |
|
void SSOHandler (Activity activity,Weibo weibo) |
|
参数名称 |
作用 |
activity |
发起认证的Activity |
|
weibo对象 |
接口名称 |
void authorizeCallBack(int requestCode, int resultCode, Intent data) |
使用说明 |
在Authorize Activity里覆写onActivityResult(int requestCode, int resultCode, Intent data),在方法中使用SSOHandler对象调用authorizeCallBack(int requestCode, intresultCode, Intent data) |
SSO 认证 |
|
接口名称 |
|
void authorize (WeiboAuthListenerlistener weiboAuthListener) |
|
使用说明 |
|
发起sso认证时调用此方法 |
|
参数名称 |
作用 |
weiboAuthListener |
用于异步返回服务器的返回结果 |
Android新浪微博分享实现相关推荐
- android 新浪微博签名工具,Android 集成新浪微博分享及授权 (上)
Android 新浪微博分享及授权 在开发中遇到了各种坑....所以分享一下 希望能给大家贡献点经验 本文使用的开发的环境是 eclipse 本文叙述的新浪微博分享及其授权的内容分为两块 : 一 新 ...
- Android 集成新浪微博分享及授权 (上)
Android 新浪微博分享及授权 在开发中遇到了各种坑....所以分享一下 希望能给大家贡献点经验 本文使用的开发的环境是 eclipse 本文叙述的新浪微博分享及其授权的内容分为两块 : 一 新 ...
- android 分享到微博客户端,Android APP集成新浪微博分享功能
本文为大家分享了新浪微博分享功能集成,供大家参考,具体内容如下 直接导入weibosdkcore.jar:适用于只需要授权.分享.网络请求框架功能的项目. 无论使用哪一种方式,都需要先将demo中li ...
- 安卓 android一键分享 新浪微博 腾讯微博,qq空间,qq,人人网
安卓 android一键分享 新浪微博 腾讯微博,qq空间,qq,人人网 附源码: http://download.csdn.net/detail/zjgwxh/8678809
- android授权新浪微博 服务端,Android 集成新浪微博分享及授权
本文使用的开发的环境是 eclipse 本文叙述的新浪微博分享及其授权的内容分为两块 : 一 新浪提供的 WeiboSDKDemo 二 嵌入到自己的应用当中去 第一部分 运行成功 WeiboSDKDe ...
- android开发分享到微信,Android开发之微信分享到好友,朋友圈(示例代码)
3. 快速集成 第二步:配置AndroidManifest.xml 下面清单文件的配置是全部的,没有的平台就是不需要配置 1.添加权限 2.添加activity信息 (注意: tencent后面的ap ...
- [deviceone开发]-QQ分享、微信分享和新浪微博分享
一.简介 该demo主要实现QQ分享.微信分享和新浪微博分享.(调试包请到论坛扫描对应二维码下载) 二.效果图 三.相关讨论 http://bbs.deviceone.net/foru... 四.源码 ...
- Android APP分享功能实现 .
[Android应用开发详解]第01期:第三方授权认证(一)实现第三方授权登录.分享以及获取用户资料 安卓分享功能也可以使用mob提供的SDK来开发分享功能,短信验证功能.http://www.mob ...
- android原生分享功能,Android原生分享到微博、微信等平台的实现方式
在这个版本功能涉及到Android分享方式的变更,需求要求: 分享只支持新浪微博.微信,其他方式均去掉. 为了更好的测试还是要看下Android分享实现分享的方式,然后才能更好地评估测试时间和设计测试 ...
最新文章
- 线段树求矩形面积并 扫描线+离散化
- 移动端高清、多屏适配方案
- android之权限大全
- WordPress强制跳转https教程
- IT运维管理为重,从业务需求看网管系统的选择
- POJ2492A Bug's Life【并查集+根节点偏移】
- cad2012打开后闪退_win10系统安装cad2012一直闪退的解决方法
- 2021厦门湖滨中学高考成绩查询,厦门各高中本科上线率2020
- java中成员变量和局部变量的区别
- recycleview添加item点击事件--作业三
- 记录自已学习之ARM汇编语言之bic和orr
- 怎么解决服务器延迟问题
- CPU降频实现原理与试验数据
- SOA系列之 什么是SOA?
- datastage 如何把db2的varchar列数据抽取到mysql的longtext列
- 菜鸡服务器不支持接力,行业首发!菜鸡新功能游戏接力上线,将开云游戏新赛道...
- 动态规划——割绳子问题
- 本周总结-付金田-2018年3月18日
- Alert The AC power adapter wattage and type cannot be determined. (戴尔电脑开机)
- 密码嗅探、中间人攻击