微博授权分享

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

微博授权分享的相关文章

实战新浪微博、腾讯微博的分享功能(转)

转载自:http://blog.csdn.net/nogodoss/article/details/17528749 我做的大概界面是如下图. 主要有两个界面,一个是新浪微博,腾讯微博的分享按钮,一个是他们的绑定情况(其实就是是否授权).点击微博分享中新浪或腾讯按钮,就进行相应的授权(若没授权),显示微博内容,而后发布微博.设置界面中的绑定,就是相关的应用授权. 呵呵,其实也蛮简单滴. 首先分别从新浪微博开放平台(http://open.weibo.com/).腾讯微博开放平台(http://d

ShareSDK 微博空间分享

本文转载至 http://blog.csdn.net/learnios/article/details/8992346 ShareSDK微博分享空间分享新浪微博腾讯微博 第一步:首先导入ShareSDK第三方类库,添加依赖框架 : SystemConfiguration.framework QuartzCore.framework MessageUI.framework(如果不集成邮件和短信可以不添加) libicucore.dyliblibz.1.2.5 第二步:导入头文件#import "S

Hbuilder第三方插件开发demo--第三方授权分享支付,推送等

<template> <view class="content"> <button id="loginByWX" @click="thirdPartyLogin" data-type="weixin">微信第三方登录</button> <button id="loginByWX" @click="thirdPartyLogin" da

JS 微博,人人,腾讯微博直接分享

function sharesina() { window.open("http://service.weibo.com/share/mobile.php?&title=&pic=&url="); } function shareqq() { window.open("http://share.v.t.qq.com/index.php?c=share&a=index&url=&appkey=&assname=&t

基于sina微博官方sdk源码实现的微博授权登录和分享,以及获取信息

本菜近期由于工作需要,在大牛的要求下,用sina官方平台提供的SDk的源码(非静态库)实现了微博的授权登录,分享,并获取用户信息,好友信息,(包括昵称,头像,userID,token,等等)写完了之后对整体的体系,有了深刻的理解,希望对与本菜一样刚工作不久的新人朋友有所帮助,话休繁说,上代码. // 这个是Sina的sdk源码.(大牛提供) // 这个是现示登录按钮的界面,分享和获取好友信息的我也写在这个页面上了 // 这个是登录的验证界面(就是新浪的那个WebView) // 这个界面关键的代

Android 第三方QQ、微信、微博登录分享

最近弄了下QQ微信微博的登录分享,在这里做一下总结,以下登录分享使用的都是官方的最新SDk. 首先是QQ的登录: 1.第一步肯定是先去开放平台注册应用,这里步骤就不详细说了 http://open.qq.com/ 2.将下载好的jar包导入工程,在AndroidManifest文件里面注册SDK里面提供的Activity <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="

微博授权登陆

微博使用AS会找不到jar包   需要将so文件放在main下jniLibs目录下 从下载的sdk中复制 AbsOpenAPI, AccessTokenKeeper, UsersAPI .java文件 自定义userInfo接收用户信息 /** * Created by Administrator on 2016/10/3. */public class SinaUserInfo { private String uid;//用户ID private String name;//用户昵称 pri

第三方登录,授权,分享

</pre><pre name="code" class="java"> </pre><pre name="code" class="java"> </pre><pre name="code" class="java"> </pre><pre name="code" class=

【Python web 开发】微博授权登录,获取access_token

1.请求微博获取授权 接口:oauth2/access_token 因为要用post 请求,所以要借用Python 的requests 库 2.拿到access_token ,后续有要用到用户信息的接口,可以拿这个access_token 原文地址:https://www.cnblogs.com/yuanyuan2017/p/9973751.html