android 新浪微博分享功能实现

新浪微博分享功能



注册帐号后,创建应用后,会得到一个唯一的key和secret,如下图







我在工程中使用的是Oauth2.0隐式授权方式,所以需要在新浪微博开发者平台重定义地址,如下图







需要在工程中加入新浪微博demo中com.weibo.net里面的内容,如下图







需要修改Weibo.java里面的代码

private static String APP_KEY = "";

private static String APP_SECRET = "";

将里面的内容替换成你创建项目时候生成的key和secret

public staticfinal String DEFAULT_REDIRECT_URI = "";

这里也要重新设置成你之前重定义的地址



具体可参考新浪微博的例子



自己封装了一个调用新浪微博的类 SinaWeiboUtil



public class SinaWeiboUtil {



private SinaWeiboRequestListener mWeiboRequestListener;



private TestActivity mActivity;



private static SinaWeiboUtil instance;



public static SinaWeiboUtil getInstance() {

return instance;

}



public static void createInstance(TestActivity activity) {

instance = new SinaWeiboUtil(activity);

}



private SinaWeiboUtil(TestActivity activity) {

mActivity = activity;

}



public void sendSinaWeibo() {

Weibo weibo = Weibo.getInstance();

if (AppConst.WACCESSTOKEN != null) {

weibo.setRedirectUrl(Weibo.DEFAULT_REDIRECT_URI);// 此处回调页内容应该替换为与appkey对应的应用回调页

AccessToken accessToken = new AccessToken(AppConst.WACCESSTOKEN,

Weibo.getAppSecret());

weibo.setAccessToken(accessToken);

accessToken.setExpiresIn("86400");

try {

Log.v("tag==========", "secret =" + Weibo.getAppSecret()

+ " token =" + Weibo.getAppKey());

update(weibo, Weibo.getAppKey(), mActivity

.getResources().getString(R.string.smscontent), "", "");

} catch (MalformedURLException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

} catch (NotFoundException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

} catch (WeiboException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

}

} else {



// Oauth2.0

// 隐式授权认证方式

weibo.setRedirectUrl(Weibo.DEFAULT_REDIRECT_URI);// 此处回调页内容应该替换为与appkey对应的应用回调页

// 对应的应用回调页可在开发者登陆新浪微博开发平台之后,

// 进入我的应用--应用详情--应用信息--高级信息--授权设置--应用回调页进行设置和查看,

// 应用回调页不可为空

weibo.authorize(mActivity,

new SinaAuthDialogListener(mActivity));

}

}



public void update(Weibo weibo, String source, String status,

String lon, String lat) throws MalformedURLException,IOException,

WeiboException {

WeiboParameters bundle = new WeiboParameters();

bundle.add("source", source);

bundle.add("status", status);

if (!TextUtils.isEmpty(lon)) {

bundle.add("lon", lon);

}

if (!TextUtils.isEmpty(lat)) {

bundle.add("lat", lat);

}

String url = Weibo.SERVER + "statuses/update.json";

AsyncWeiboRunner weiboRunner = new AsyncWeiboRunner(weibo);

if (mWeiboRequestListener == null) {

mWeiboRequestListener = new SinaWeiboRequestListener(mActivity);

}

weiboRunner.request(mActivity, url, bundle, Utility.HTTPMETHOD_POST,

mWeiboRequestListener);

}

}



新浪微博认证对话框接口

SinaAuthDialogListener

public class SinaAuthDialogListenerimplements WeiboDialogListener {



TestActivity mActivity;



public SinaAuthDialogListener(TestActivity activity) {

mActivity = activity;

}



@Override

public void onComplete(Bundle values) {

String token = values.getString("access_token");

String expires_in = values.getString("expires_in");

mActivity.setWAccessToken(token);

Weibo.getInstance();

AccessToken accessToken = new AccessToken(token,

Weibo.getAppSecret());

accessToken.setExpiresIn(expires_in);

Weibo.getInstance().setAccessToken(accessToken);

try {

SinaWeiboUtil.getInstance().update(Weibo.getInstance(),Weibo.getAppKey(), mActivity

.getResources().getString(R.string.smscontent), "", "");

} catch (MalformedURLException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

} catch (NotFoundException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

} catch (WeiboException e) {

// TODO Auto-generatedcatch block

e.printStackTrace();

}

}



@Override

public void onError(DialogError e) {

Toast.makeText(mActivity, "Autherror : " + e.getMessage(),

Toast.LENGTH_LONG).show();

}



@Override

public void onCancel() {

Toast.makeText(mActivity, "Authcancel", Toast.LENGTH_LONG).show();

}



@Override

public void onWeiboException(WeiboException e) {

Toast.makeText(mActivity, "Authexception : " + e.getMessage(),

Toast.LENGTH_LONG).show();

}



}



新浪微博请求接口 SinaWeiboRequestListener

public class SinaWeiboRequestListenerimplements RequestListener {



private TestActivity mActivity;



public SinaWeiboRequestListener(TestActivity activity) {

mActivity = activity;

}



@Override

public void onComplete(String response) {

mActivity.runOnUiThread(new Runnable() {



@Override

public void run() {

Toast.makeText(mActivity, R.string.send_sucess,

Toast.LENGTH_LONG).show();

}

});

}



@Override

public void onIOException(IOException e) {

// TODO Auto-generatedmethod stub



}



@Override

public void onError(final WeiboException e) {

mActivity.runOnUiThread(new Runnable() {



@Override

public void run() {

Toast.makeText(

mActivity,

String.format(

mActivity.getString(R.string.send_failed)

+ ":%s", e.getMessage()),

Toast.LENGTH_LONG).show();

}

});



}



}



需要在MainFest中加入以下权限

<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>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">

</uses-permission>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值