使用新浪微博开放平台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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线