在自己的App里面加入微博分享---Android平台
现在的App,如果是想留住用户,单纯的用本App的账户用户名已经很难达到目的,就像网站一样,查看网站内容需要注册账户登录后才能查看,如果不是很感兴趣的内容,一般就直接选择点击网页旁边的小红叉关掉网页。App也是这样的情况,只不过现在用户不是狂按back键返回,而是直接卸载。所以兵来将挡水来土掩,所以考虑各大门户,用第三方接口接入就能比较有效地留住用户了,现在就来讲讲如何接入第三方之微博篇。
按步骤来讲应该会比较清晰,那就一步一步来吧。
1、基于了解三方接口目的,先到官网下载SDK,微博是到微博的网站下载,网址open.weibo.com
2、将下载好的SDK解压后将Lib 和 Demo都导入开发软件中,并运行Demo,就运行就好其他不要操作,然后开始在新浪的网址上创建应用
3、点击微连接的下拉项选择移动应用,在跳出的页面选择立即连接,此时需要登录微博账号,如果没有注册一个,并且注册开发信息,完事后开始创建应用
4、在创建应用界面输入应用名称,选择客户端、手机、Android,然后点击创建,创建成功跳转至控制台界面,这里如果对刚才的设置有所反悔依然可以修改。
5、Android签名包的注册,首先输入应用的包名,包名在你应用的清单文件那边可以找到,Android签名获得是这样子的,在解压SDK时会有一个app_signatures.apk安装包,将它安装到模拟器中(一般拖拽进去就可以)然后运行,在输入框里输入应用的包名,点击生成就会生成Android应用的签名,将此签名拷贝黏贴到网页的Android签名一栏中,这样就可以了,后面的两组包名和签名不用填,接下来的一些选项如果是开发测试用可以随便填写,如果是正规使用,需要在产品经理的指导下填写。最后点击保存以上信息。
6、在该界面的左边找到高级信息,点击进去里面的授权回调页与取消授权回调页也要填写,当然,这是你们公司服务器的网址,自己测试随便填。记得保存。
7、以上网页端就写好了,接下来是在Demo里面进行配置。
进行三方接口的使用一般都要一个密钥,微博叫AppKey,在你刚才填写的应用信息那边就能找到,将此值复制,打开Demo的Constants.java类,在public static final String APP_KEY 处黏贴key值,并在public static final String REDIRECT_URL处黏贴授权回调的网址,好,这样就可以运行Demo的授权功能了。
8、打开应用,单击微博授权按钮,点击sso授权(ALL IN ONE)就会跳出微博登录页面,输入账户和密码就能进行授权。授权成功后返回本页面会显示一个token码,这个有很大的用途。
接下来是发微博功能。
一般通过微博分享App的形式是酱紫的,在授权用户的微博上发一篇微博,说使用xxApp感觉很棒,并附上App的下载地址,这样就算达到分享效果了,所以本质上是发一条微博。
所以发微博就需要使用微博的微博接口来实现分享功能。
还是这样子,一步一步来。
为了讲解方便,我们自己创建一个项目来进行实现用我们自己的应用发送微博功能。
这里先注意一下,由于官方Demo问题,weiboSDK里面没有库文件,所以要将Demo里面的库考到weiboSDK里面
1、用微博签名生成器给我们自己的应用生成一个签名,并在网页上创建的微博应用进行注册,具体是:
1)拷贝本项目包名,在模拟器上打开weibo签名生成器,黏贴包名,生成签名,然后复制签名,在网页上我的应用--应用信息--应用签名包信息--下面黏贴包名和签证,保存。
2、创建自己的项目,然后用我们的库去依赖weiboSDK。
3、在库清单文件里面注册权限,还有一个很重要的
<!-- 必须注册在微博授权,分享微博时候用到 -->
<activity
android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:windowSoftInputMode="adjustResize" >
</activity>
这个一定要在清单文件里面配置,这是weiboSDK里面的授权界面的布局,没有配置会直接导致App死掉
4、根据Demo里面的微博授权--SSo授权(ALL IN ONE)按钮的点击事件整合微博的授权功能,微博授权成功,会返回一个Assess_Token,同时会用SharePreference写入手机内存,酱紫以后就不用再每次都要进行授权了。
重点来了,拿到Token后就可以在微博上发微博了。
根据微博的API文档可以知道是通过post协议发送消息的,post协议是由一个请求的URL加上一个Map类的方式进行请求,map里面要包含Token值还有发送的内容,这样就可以发出微博了,代码:
Map<String, String> params = new HashMap<String, String>();
params.put("access_token", accessToken);
params.put("status", mt_say.getText().toString());
String url = "https://api.weibo.com/2/statuses/update.json";
HTTPUtils.post(this, url, params, new VolleyListener() {
@Override
public void onResponse(String arg0) {
WeiboDate weiboDate = GsonUtils
.parseJSON(arg0, WeiboDate.class);
User user = weiboDate.getUser();
setmsg(user);
if (!arg0.isEmpty()) {
if (arg0.contains("error_code")) {
Toast.makeText(MainActivity.this, "分享失败",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "分享成功",
Toast.LENGTH_SHORT).show();
}
}
}
http的Post协议得好好研究下,其map对象的内容一定要含有token字段才能发微博,差不多就这样