1. 快速接入腾讯微博
可以到https://github.com/wbopenplatform/Android_SDK地址下载腾讯封装的sdk直接引入如下jar包
使用可参考腾讯微博官方地址:http://wiki.open.t.qq.com/index.php/SDK%E4%B8%8B%E8%BD%BD#Android_SDK
2. 在AndroidManifest.xml文件中导入在手机未安装腾讯微博无法使用sso登录的情况需要应用内部调用显示授权页面
<activity android:name="com.tencent.weibo.sdk.android.component.Authorize">
</activity>
3. 引入授权代码,调用auth()方法直接传入你自己在腾讯微博申请的appid和app_secret
privatevoid auth(long appid, Stringapp_secket) {
final Context context = this.getApplicationContext();
// 注册当前应用的appid和appkeysec,并指定一个OnAuthListener
// OnAuthListener在授权过程中实施监听
AuthHelper.register(this, appid,app_secket, new OnAuthListener() {
privatevoid auth(long appid, Stringapp_secket) {
final Context context = this.getApplicationContext();
// 注册当前应用的appid和appkeysec,并指定一个OnAuthListener
// OnAuthListener在授权过程中实施监听
AuthHelper.register(this, appid, app_secket, new OnAuthListener() {
// 如果当前设备没有安装腾讯微博客户端,走这里
@Override
publicvoid onWeiBoNotInstalled() {
Toast.makeText(MainPageActivity.this, "onWeiBoNotInstalled",
1000).show();
AuthHelper.unregister(MainPageActivity.this);
Intent i = new Intent(MainPageActivity.this, Authorize.class);
startActivity(i);
}
// 如果当前设备没安装指定版本的微博客户端,走这里
@Override
publicvoid onWeiboVersionMisMatch() {
Toast.makeText(MainPageActivity.this, "onWeiboVersionMisMatch",
1000).show();
AuthHelper.unregister(MainPageActivity.this);
Intent i = new Intent(MainPageActivity.this, Authorize.class);
startActivity(i);
}
// 如果授权失败,走这里
@Override
publicvoid onAuthFail(int result, String err) {
Toast.makeText(MainPageActivity.this, "result : " + result,
1000).show();
AuthHelper.unregister(MainPageActivity.this);
}
// 授权成功,走这里
// 授权成功后,所有的授权信息是存放在WeiboToken对象里面的,可以根据具体的使用场景,将授权信息存放到自己期望的位置,
// 在这里,存放到了applicationcontext中
@Override
publicvoid onAuthPassed(String name, WeiboToken token) {
Toast.makeText(MainPageActivity.this, "passed", 1000).show();
//
Util.saveSharePersistent(context, "ACCESS_TOKEN",
token.accessToken);
Util.saveSharePersistent(context, "EXPIRES_IN",
String.valueOf(token.expiresIn));
Util.saveSharePersistent(context, "OPEN_ID", token.openID);
//Util.saveSharePersistent(context, "OPEN_KEY", token.omasKey);
Util.saveSharePersistent(context, "REFRESH_TOKEN", "");
//Util.saveSharePersistent(context, "NAME", name);
//Util.saveSharePersistent(context, "NICK", name);
Util.saveSharePersistent(context, "CLIENT_ID", Util.getConfig()
.getProperty("APP_KEY"));
Util.saveSharePersistent(context, "AUTHORIZETIME",
String.valueOf(System.currentTimeMillis()/ 1000l));
AuthHelper.unregister(MainPageActivity.this);
}
});
AuthHelper.auth(this, "");
}
4. 实现调用发送文本消息功能,获取到授权存储的accessToken信息,调用发送addWeibo()接口发送微博,其他接口调用可参考下载下来的工程代码,运行就可以看到,很简单
accessToken = Util.getSharePersistent(getApplicationContext(),
"ACCESS_TOKEN");
if (accessToken == null || "".equals(accessToken)) {
Toast.makeText(MainActivity.this, "请先授权",
Toast.LENGTH_SHORT).show();
this.finish();
return ;
}else{
AccountModel account = new AccountModel(accessToken);
weiboAPI = new WeiboAPI(account);
//发送微博
weiboAPI.addWeibo(context, "甜甜甜甜甜23423423234222", requestFormat,
0d, 0d, 0, 0, mCallBack, null, BaseVO.TYPE_JSON);
}
5.
在测试授权过程中会发现提示checksign error错误,在授权成功时我们会持久化信息,腾讯微博给的demo没有说明引入后我们需要做哪些修改,在测试中发现需要在成功授权以后会持久化一些信息
Util.saveSharePersistent(context, "CLIENT_ID", Util.getConfig()
会持久化app_key,我们需要修改为我们自己申请的key
通过查看从git上下载下来源代码发现发送微博时会传送oauth_consumer_key参数,值应该是申请的app_key,若传递错误的话会导致check sign error错误
publicvoid addWeibo(Context context, String content, String format,
double longitude, double latitude, int syncflag,
int compatibleflag, HttpCallback mCallBack,
Class<? extends BaseVO> mTargetClass, int resultType) {
ReqParam mParam = new ReqParam();
mParam.addParam("oauth_version", "2.a");
mParam.addParam("oauth_consumer_key",
Util.getSharePersistent(context, "CLIENT_ID"));