使用新浪微博开放平台api同步微博内容至自己网站(微博SDK及SDK工程目录结构及分析微博(组图))
优采云 发布时间: 2022-04-10 04:31使用新浪微博开放平台api同步微博内容至自己网站(微博SDK及SDK工程目录结构及分析微博(组图))
注销API
用于回收用户的授权。
邀请API
提供好友邀请功能,支持登录用户向微博互粉发送私信邀请和礼物。
注意:目前我们只提供了部分接口,主要原因是API太大,每个API都测试非常耗时。所以我们优先开放第三方在使用时最关心的API(如上表所示),其他API继续放在com.sina.weibo.sdk.openapi.legacy下。其实这些API我们并没有全部开放,也希望第三方开发者可以和我们一起维护这些API,把修改后的代码推送到Github上。
另外,网络模块已经重构为易于使用的框架,第三方开发者可以通过Http请求直接调用OpenAPI接口,见:.
API 文档说明
运行示例代码
为了方便第三方应用更快地集成微博SDK,更清楚地了解微博SDK提供的功能,我们在GitHub上提供了一个简单的示例工程和对应的APK安装包。
**方法一:**通过adb install命令直接安装WeiboSDKDemo.apk
**方法二:**在Eclipse中导入并运行WeiboSDKDemo工程(具体请参考微博Android平台SDK文档3.1.1.pdf:运行示例代码)
注意:通过方法2运行项目时,一定要替换掉默认的debug.keystore文件,否则正确授权不会成功。另外,debug.keysotre是新浪官方的,请不要直接使用,除非编译运行官方DEMO。出于安全原因,您应该为您的应用程序提供一个密钥库。
在 C:\Users\XXXXX\.android 目录下,将 Android 默认的 debug.keystore 替换为 GitHub 上提供的官方 debug.keystore。
微博SDK和DEMO项目目录结构及分析
微博SDK目前以部分开源的形式提供给第三方开发者。简而言之,可以分为以下三个部分:
集成前准备1. 申请应用的APP_KEY
在这一步中,您需要在微博开放平台上注册您的应用,获取APP_KEY,并添加应用的授权回调页面(Redirect URI)。详情请仔细阅读:手机客户端访问( )
2. 注册的应用包名和签名
您需要在微博开放平台上注册应用程序的包名和签名,才能正确进行授权。
请注意:包名和签名未注册,或签名注册错误,将导致授权失败。
应用包名:指AndroidManifest.xml文件中package标签所代表的内容。
应用签名:签名是官方签名工具生成的MD5值。
详情请查看:微博Android平台SDK文档V3.1.1.pdf:如何使用签名工具获取应用的签名?
3. 选择您想要的集成方式
在集成微博 SDK 之前,您有两种可选的方式来集成微博 SDK:
详情请查看:微博Android平台SDK文档3.1.1.pdf 中:选择你要集成的方式
4. 将 SDK 添加到您的应用所需的权限
">
5. 在你的应用中注册SDK需要的Activity,Service
第三方如何使用(认证授权)1.替换自己应用的APP_KEY等参数
鉴于很多第三方开发者在Demo中直接复制使用Constants类,有必要说明一下第三方开发者需要将Constants类中的各种参数替换为自己应用程序的参数。请仔细阅读代码注释。
public interface Constants {
/** 当前 DEMO 应用的 APP_KEY,第三方应用应该使用自己的 APP_KEY 替换该 APP_KEY */
public static final String APP_KEY = "2045436852";
/**
* 当前 DEMO 应用的回调页,第三方应用可以使用自己的回调页。
* 建议使用默认回调页:https://api.weibo.com/oauth2/default.html
*/
public static final String REDIRECT_URL = "http://www.sina.com";
/**
* WeiboSDKDemo 应用对应的权限,第三方开发者一般不需要这么多,可直接设置成空即可。
* 详情请查看 Demo 中对应的注释。
*/
public static final 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";
}
2. 创建微博API接口类对象
mAuthInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE);
其中:APP_KEY、REDIRECT_URL、SCOPE需要替换为第三方应用申请的内容。
3. 实现 WeiboAuthListener 接口
class AuthListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
// 从 Bundle 中解析 Token
mAccessToken = Oauth2AccessToken.parseAccessToken(values);
if (mAccessToken.isSessionValid()) {
// 保存 Token 到 SharedPreferences
AccessTokenKeeper.writeAccessToken(WBAuthActivity.this, mAccessToken);
.........
} else {
// 当您注册的应用程序签名不正确时,就会收到 Code,请确保签名正确
String code = values.getString("code", "");
.........
}
}
@Override
public void onCancel() {
}
@Override
public void onWeiboException(WeiboException e) {
}
}
4. 调用方法、认证和授权
mSsoHandler = new SsoHandler(WBAuthActivity.this, mAuthInfo);
mSsoHandler.authorizeWeb(new AuthListener());
mSsoHandler = new SsoHandler(WBAuthActivity.this, mAuthInfo);
mSsoHandler. authorize(new AuthListener());
以上三个授权需要在Activity的onActivityResult函数中调用如下方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (mSsoHandler != null) {
mSsoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
使用网络请求框架
在V2.5.0之后的版本中,我们重构了网络模块,提供同步和异步网络请求接口。
异步接口:AsyncWeiboRunner#requestAsync(String, WeiboParameters, String, RequestListener)
同步接口:AsyncWeiboRunner#request(String, WeiboParameters, String)
其中,同步接口用于开发者拥有自己的异步请求机制。
示例:使用异步接口发送带图片的微博
// 1. 获取要发送的图片
Drawable drawable = getResources().getDrawable(R.drawable.ic_com_sina_weibo_sdk_logo);
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
// 2. 调用接口发送微博
WeiboParameters params = new WeiboParameters();
params.put("access_token", mAccessToken.getToken());
params.put("status", "通过API发送微博-upload");
params.put("visible", "0");
params.put("list_id", "");
params.put("pic", bitmap);
params.put("lat", "14.5");
params.put("long", "23.0");
params.put("annotations", "");
AsyncWeiboRunner.requestAsync(
"https://api.weibo.com/2/statuses/upload.json",
params,
"POST",
mListener);
上述代码中,请自行添加mAccessToken和mListener
其他功能
其他功能请参考文档:微博Android平台SDK文档V3.1.1.pdf