android 实现新浪微博登陆和分享

最近弄了一下新浪微博登陆和分享,差点把我玩死...新浪的官网api和下载下来的pdf实在是写的太垃圾了,最后还是参考了demo和新浪pdf和百度了一大把教程才搞定,在这里记录一下,以备以后复习和使用

先去新浪微博成为开发者,然后创建应用,需要上传的东西都上传,下载新浪微博的签名工具,在eclipse中创建出这个工程,然后安装.签名工具把我们刚安装的应用的md5值得到,然后填入网页中,最后提交.不过还有要

使用的是新浪微博v3.0.1.jar这个包

在这里我们参考demo,把我们的apikey和回调地址都写在一个类常量类里面

1.首先创建一个authinfo对象,因为待会的Ssohandler对象的建立需要这个对象,这个对象需要四个参数,第一个是上下文对象,第二个是我们的app_key,第三个是回调地址,第四个是我们范伟描述,是一个字符串

authInfo = new AuthInfo(context, Constants.APP_KEY,Constants.REDIRECT_URL, Constants.SCOPE);

2.创建一个SsoHandler对象

ssoHandler = new SsoHandler(Main.this, authInfo);

3.创建一个类实现WeiboAuthListener

// 授权时的监听public class MyWeiBoAuthListener implements WeiboAuthListener {@Overridepublic void onCancel() {// TODO Auto-generated method stubToast.makeText(context, "onCancel", Toast.LENGTH_SHORT).show();}@Overridepublic void onComplete(Bundle arg0) {// TODO Auto-generated method stubToast.makeText(context, "onComplete:" + arg0.toString(),Toast.LENGTH_SHORT).show();resultTextView.setText(arg0.toString());}@Overridepublic void onWeiboException(WeiboException arg0) {// TODO Auto-generated method stubToast.makeText(context, "onWeiboException", Toast.LENGTH_SHORT).show();}}
4.在该activity里面实现onActivityResult,不然上面的那个监听根本没有用

//这个是用来看返回结果的,先接受返回结果,然后MyWeiBoAuthListener这里的才能得以执行@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if (ssoHandler != null) {ssoHandler.authorizeCallBack(requestCode, resultCode, data);}}
5.在配置文件中添加权限和微博登陆必须的activity

 

这个时候微博登陆已经完成的差不多了,登陆成功返回的是一个json字符串


新浪微博分享

1.首先创建一个IWeiboShareAPI对象,顺便把他注册到微博,不注册无法分享

iWeiboShareAPI = WeiboShareSDK.createWeiboAPI(share.this, Constants.APP_KEY);iWeiboShareAPI.registerApp();//注册

2.分享函数的创建

public void Share() {WeiboMultiMessage weiboMultiMessage = new WeiboMultiMessage();weiboMultiMessage.textObject = getTextObj();weiboMultiMessage.imageObject = getImageObject();SendMultiMessageToWeiboRequest sendMultiMessageToWeiboRequest = new SendMultiMessageToWeiboRequest();sendMultiMessageToWeiboRequest.transaction = "imgod"+ System.currentTimeMillis();sendMultiMessageToWeiboRequest.multiMessage = weiboMultiMessage;iWeiboShareAPI.sendRequest(share.this, sendMultiMessageToWeiboRequest);}

3.分享操作存在的activity实现IWeiboHandler.Response接口,并实现两个方法


@Overrideprotected void onNewIntent(Intent intent) {// TODO Auto-generated method stubsuper.onNewIntent(intent);iWeiboShareAPI.handleWeiboResponse(intent, this);}@Overridepublic void onResponse(BaseResponse baseResp) {// TODO Auto-generated method stubswitch (baseResp.errCode) {case WBConstants.ErrorCode.ERR_OK:Toast.makeText(this, "ERR_OK_分享成功", Toast.LENGTH_LONG).show();break;case WBConstants.ErrorCode.ERR_CANCEL:Toast.makeText(this, "ERR_CANCEL_取消分享", Toast.LENGTH_LONG).show();break;case WBConstants.ErrorCode.ERR_FAIL:Toast.makeText(this,"ERR_FAIL_分享失败" + "Error Message: " , Toast.LENGTH_LONG).show();break;}}

4.在配置文件中声明该activity的action

 

这里的分享操作和登陆操作并没有在同一个activity下面,因为在同一个activity下面,第一个登陆授权的的activity的action是android.intent.action.Main

再添加这个的话虽然也能分享成功,但是没有很好的获取到分享结果的操作了








本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部