新浪微博分享
准备工作:
a. 获取新浪微博开发者身份(http://open.weibo.com/),一般审核要一天左右(个人使用,选中个人就好,如果选中公司就不能换了)
b. 创建应用,主要的就是包名和签名(签名可以用微博提供的签名工具就好)。请注意:要签名的第三方应用程序必须安装在该设备上才能够生成对应的MD5签名
首先要安装您需要签名的应用,然后再安装该工具,安装完后,输入您的应用程序的包名,点击生成按钮,即可获得MD5签
c.拿到appkey后也要几个写回调地址(在应用的高级设置里)注:如果只是测试使用只要身份审核就可以了,应用可以不提交审核
d.Libs文件的添加:
1.
<uses-permissionandroid:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2.有关微博的授权方式:
目前微博SDK为开发者提供三种授权方式:
SSO授权:仅当手机安装新浪微博。客户端时使用 SSO 授权登陆
Web 授权:在没有客户端的情况下,可直接使用该授权
SSO+Web 授权: 如果手机端安装了新浪微博客户端的话会默认发起SSO授权,反之则进行Web授权 (推荐使用,all in one)
这里使用第三种:注:此种授权方式会根据手机是否安装微博客户端来决定使用sso授权还是网页授权,如果安装有微博客户端 则调用微博客户端授权,否则调用Web页面方式授权
1. 分享方式 all in one 微博和web都可以
代码:
Constants.java;该类定义了微博授权时所需要的参数。
publicinterface Constants {
/** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
publicstaticfinal String APP_KEY = "你的AppKey";
/**
* 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。建议使用默认回调页:https://api.weibo.com/oauth2/default.html
*/
//授权回调
publicstaticfinal String REDIRECT_URL = "你的授权回调页面";
/**
* Scope 是 OAuth2.0 授权机制中 authorize 接口的一个参数。通过 Scope,平台将开放更多的微博核心功能给开发者,同时也加强用户隐私保护,提升了用户体验,用户在新 OAuth2.0 授权页中有权利选择赋予应用的功能。
我们通过新浪微博开放平台-->管理中心-->我的应用-->接口管理处,能看到我们目前已有哪些接口的使用权限,高级权限需要进行申请。目前 Scope 支持传入多个 Scope 权限,用逗号分隔。有关哪些 OpenAPI 需要权限申请,
请查看:http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI;关于 Scope 概念及注意事项,请查看:http://open.weibo.com/wiki/Scope
*/
publicstaticfinal String SCOPE =
"email,direct_messages_read,direct_messages_write,"
+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
+ "follow_app_official_microblog," + "invitation_write";
}
AccessTokenKeeper.java;//存放获取授权信息
publicclass AccessTokenKeeper {
privatestaticfinal String PREFERENCES_NAME = "myweboShare";
privatestaticfinal String KEY_UID = "uid";
privatestaticfinal String KEY_ACCESS_TOKEN = "access_token";
privatestaticfinal String KEY_EXPIRES_IN = "expires_in";
privatestaticfinal String KEY_REFRESH_TOKEN = "refresh_token";
/**
* 保存 Token 对象到 SharedPreferences。
*
* @param context 应用程序上下文环境
* @param token Token 对象
*/
publicstaticvoid writeAccessToken(Context context,Oauth2AccessToken token) {
if (null == context || null == token) {
return;
}
SharedPreferences pref =context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
Editor editor = pref.edit();
editor.putString(KEY_UID, token.getUid());
editor.putString(KEY_ACCESS_TOKEN, token.getToken());
editor.putString(KEY_REFRESH_TOKEN, token.getRefreshToken());
editor.putLong(KEY_EXPIRES_IN, token.getExpiresTime());
editor.commit();
}
/**
* 从 SharedPreferences 读取 Token 信息。
*
* @param context 应用程序上下文环境
*
* @return返回 Token 对象
*/
publicstatic Oauth2AccessToken readAccessToken(Context context) {
if (null == context) {
returnnull;
}
Oauth2AccessToken token = new Oauth2AccessToken();
SharedPreferences pref =context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
token.setUid(pref.getString(KEY_UID, ""));
token.setToken(pref.getString(KEY_ACCESS_TOKEN, ""));
token.setRefreshToken(pref.getString(KEY_REFRESH_TOKEN, ""));
token.setExpiresTime(pref.getLong(KEY_EXPIRES_IN, 0));
return token;
}
/**
* 清空 SharedPreferences 中 Token信息。
*
* @param context 应用程序上下文环境
*/
publicstaticvoid clear(Context context) {
if (null == context) {
return;
}
SharedPreferences pref =context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_APPEND);
Editor editor = pref.edit();
editor.clear();
editor.commit();
}}
<span style="font-size:14px;">
demo地址:http://download.csdn.net/detail/u010904027/9146939</span>
将appkey以及Secret替换成自己,还有授权:
结果:
授权分享:
分享到微博客端,并在客户端查看:
分享中遇到的问题:
1.授权初始化失败,签名写错
2.没有安装客户端