1.注册开发者账号
进入新浪微博提供的开放平台 注册新浪账号:http://open.weibo.com/
在管理中心需要创建一个应用,得到Appkey,如果只是实现分享的功能也不需要提交审核。
2.应用信息
基本信息页面:需要填写Android签名
签名工具下载地址:https://github.com/mobileresearch/weibo_android_sdk/blob/master/app_signatures.apk
安装到手机,打开签名工具输入包名,生成一个唯一的MD5校验码,填写即可。
高级信息页面:需要填写授权回调页面,需要与程序代码中的REDIRECT_URL一致,如下图所示
3.讲WeiboSDK引入到自己的项目当中
WeiboSDK下载地址:http://open.weibo.com/wiki/SDK#Android_SDK
4.实现认证及分享
<pre name="code" class="java"> /** * 该类演示了第三方应用如何通过微博客户端分享内容。 * 执行流程: 从本应用->微博->本应用 */ public class WBShareActivity extends Activity implements Response, OnClickListener { /** 微博分享按钮 */ private Button mShareButton; /** 微博实例 */ private AuthInfo mAuthInfo; /** 注意:SsoHandler 仅当 SDK 支持 SSO 时有效 */ private SsoHandler mSsoHandler; /** 封装了 "access_token","expires_in","refresh_token",并提供了他们的管理功能 */ private Oauth2AccessToken mAccessToken; /** 是否安装微博*/ private boolean isInstalledWeibo; /** 支持Api级别*/ private int supportApiLevel; /** 微博分享的接口实例 */ private IWeiboShareAPI mWeiboShareAPI; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wbshare); //点击执行分享操作 mShareButton = (Button) findViewById(R.id.register_app_to_weibo); mShareButton.setOnClickListener(this); } @Override public void onClick(View v) { // 创建微博实例 mAuthInfo = new AuthInfo(this, Constants.WB_APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE); mSsoHandler = new SsoHandler(this, mAuthInfo); // SSO 授权, 仅客户端 mSsoHandler.authorizeClientSso(new AuthListener()); // 创建微博 SDK 接口实例 mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constants.WB_APP_KEY); // 注册第三方应用到微博客户端中,注册成功后该应用将显示在微博的应用列表中。 // 但该附件栏集成分享权限需要合作申请,详情请查看 Demo 提示 // NOTE:请务必提前注册,即界面初始化的时候或是应用程序初始化时,进行注册 mWeiboShareAPI.registerApp(); // 当 Activity 被重新初始化时(该 Activity 处于后台时,可能会由于内存不足被杀掉了), // 需要调用 {@link IWeiboShareAPI#handleWeiboResponse} 来接收微博客户端返回的数据。 // 执行成功,返回 true,并调用 {@link IWeiboHandler.Response#onResponse}; // 失败返回 false,不调用上述回调 mWeiboShareAPI.handleWeiboResponse(getIntent(), this); // 获取微博客户端是否安装 isInstalledWeibo = mWeiboShareAPI.isWeiboAppInstalled(); // 支持 SDK 的版本 supportApiLevel = mWeiboShareAPI.getWeiboAppSupportAPI(); } /** * 微博认证授权回调类。 1. SSO 授权时,需要在 {@link #onActivityResult} 中调用 * {@link SsoHandler#authorizeCallBack} 后, 该回调才会被执行。 2. 非 SSO * 授权时,当授权结束后,该回调就会被执行。 当授权成功后,请保存该 access_token、expires_in、uid 等信息到 * SharedPreferences 中。 */ class AuthListener implements WeiboAuthListener { @Override public void onComplete(Bundle values) { // 从 Bundle 中解析 Token mAccessToken = Oauth2AccessToken.parseAccessToken(values); // 判断AccessToken是否有效 if (mAccessToken.isSessionValid()) { // 保存 Token 到 SharedPreferences AccessTokenKeeper.writeAccessToken(WBShareActivity.this,mAccessToken); Toast.makeText(WBShareActivity.this, "获取token成功",Toast.LENGTH_SHORT).show(); shareToWeiBo(); } else { System.out.println("认证失败"); } } @Override public void onCancel() { Toast.makeText(WBShareActivity.this, "取消", Toast.LENGTH_LONG) .show(); } @Override public void onWeiboException(WeiboException e) { Toast.makeText(WBShareActivity.this, "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG) .show(); } } /** * 分享到微博 */ private void shareToWeiBo() { if (isInstalledWeibo) { if (mWeiboShareAPI.isWeiboAppSupportAPI()) { if (supportApiLevel >= 10351 /* ApiUtils.BUILD_INT_VER_2_2 */) { // 1. 初始化微博的分享消息 WeiboMultiMessage weiboMessage = new WeiboMultiMessage(); //这里指实现了分享文本內容 还可以分享 图片 视频 音乐 声音 网页 详见WeiboSDKDemo TextObject textObject = new TextObject(); textObject.text = "分享消息"; weiboMessage.textObject = textObject; // 2. 初始化从第三方到微博的消息请求 SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest(); // 用transaction唯一标识一个请求 request.transaction = String.valueOf(System .currentTimeMillis()); request.multiMessage = weiboMessage; // 3. 发送请求消息到微博,唤起微博分享界面 mWeiboShareAPI.sendRequest(WBShareActivity.this, request); } } else { Toast.makeText(this, "SDK不支持", Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(this, "没有安装新浪微博客户端", Toast.LENGTH_LONG).show(); } } /** * @see {@link Activity#onNewIntent} */ @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); // 从当前应用唤起微博并进行分享后,返回到当前应用时,需要在此处调用该函数 // 来接收微博客户端返回的数据;执行成功,返回 true,并调用 // {@link IWeiboHandler.Response#onResponse};失败返回 false,不调用上述回调 mWeiboShareAPI.handleWeiboResponse(intent, this); } /** * 接收微客户端博请求的数据。 * 当微博客户端唤起当前应用并进行分享时,该方法被调用。 * * @param baseRequest 微博请求数据对象 * @see {@link IWeiboShareAPI#handleWeiboRequest} */ @Override public void onResponse(BaseResponse baseResp) { switch (baseResp.errCode) { case WBConstants.ErrorCode.ERR_OK: Toast.makeText(this, "成功", Toast.LENGTH_LONG).show(); break; case WBConstants.ErrorCode.ERR_CANCEL: Toast.makeText(this, "取消", Toast.LENGTH_LONG).show(); break; case WBConstants.ErrorCode.ERR_FAIL: Toast.makeText(this, "失败" + baseResp.errMsg, Toast.LENGTH_LONG) .show(); break; } } /** * 当 SSO 授权 Activity 退出时,该函数被调用。 * * @see {@link Activity#onActivityResult} */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // SSO 授权回调 // 重要:发起 SSO 登陆的 Activity 必须重写 onActivityResult if (mSsoHandler != null) { mSsoHandler.authorizeCallBack(requestCode, resultCode, data); } } }
时间: 2024-10-05 07:26:17