Android新浪微博分享实现
来源:互联网 发布:刀剑封魔录网络 编辑:程序博客网 时间:2024/05/17 01:24
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
第三方应用的appkey(在新浪微博开放平台上创建应用时自动分配),
redirectUrl
第三方应用的回调页
返回结果
Weibo实例对象
授权认证
授权认证
接口名称
com.weibo.sdk.android.Weibo.authorize(Context context, WeiboAuthListenerlistener)
参数名称
作用
context
当前activity对象,用于获取当前网络状态,弹出对话框等。
listener
授权对话框回调接口。处理授权完成、授权失败、授权取消等事件
获取Oauth2AccessToken对象
接口名称
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
用于异步返回服务器的返回结果
SSOHandler构造函数
接口名称
void SSOHandler (Activity activity,Weibo weibo)
参数名称
作用
activity
发起认证的Activity
weibo对象
SSO回调
接口名称
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新浪微博分享实现
- Android分享新浪微博
- Android新浪微博分享
- Android新浪微博分享
- Android新浪微博分享
- Android通过ShareSDK实现新浪微博分享
- android 实现新浪微博登陆和分享
- Android—使用ShareSDK实现新浪微博分享
- 新浪微博 分享 功能的实现
- Android分享到新浪微博
- Android分享到新浪微博
- android 新浪微博sdk使用-分享
- android 分享到新浪微博
- android指定分享到新浪微博
- 关于Android新浪微博分享问题
- ios6.0以前版本开发 异常信息:reason: ‘Could not instantiate class named NSLayoutConstraint’
- 谷歌创始人 Sergey Brin
- speex翻译(转)
- 编码学
- C# 删除指定文件以及文件夹下的所有文件的方法
- Android新浪微博分享实现
- java串口通信
- 关于js获取最上层window对象的架构思路
- Zend推出新开发套件 PHP码农也能开发iOS应用
- 如何配置Qt3d 支持打开3ds,obj模型文件
- 在C#中调试C++的dll
- C/C++内存分配与Linux内存管理进程所涉及到的五个数据段 .
- 一个Java程序员对2011年的回顾
- Apache Maven和Apache Ant,你该选谁