使用新浪微博开放平台api同步微博内容至自己网站(微博SDK及示例工程目录结构及分析SDK(图))
优采云 发布时间: 2021-12-09 20:03使用新浪微博开放平台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:运行示例代码)
注意:通过第二种方式运行项目时,一定要替换默认的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文件中包标签所代表的内容。
应用签名:签名是官方签名工具生成的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. 调用方法、认证和授权
以上三个授权需要在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