本文主要是介绍新浪微博android应用开发学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在学习做一款新浪的微博android应用的时候遇到了很多问题,因为没开发过,有很多不懂得地方去百度,网上有很多开发微博的参考文章和代码,但是发现这些文章都比较久了,新浪微博的授权机制已经是OAuth2.0。和之前的用法多少不一样。于是自己慢慢看新浪给的示例代码,周折很久终于给弄出来了。写下来供也想做微博的新手朋友参考,别走那么多弯路,顺便自己也备忘一下。
第一步:去新浪微博开放平台创建应用,这跟以前是差不多的,很多文章都有写。
第二步:几个重要的项一定要填。即“Android包名”、“Android签名”、“授权回调地址”。(如果没见到这几个项多在新浪微博平台应用管理那个地方到处找找就能看见了)。
1. 2.
“Android包名”就是你所开发的应用的包名,
“Android签名”需要一个工具点击这里下载,把它装到手机或模拟器中打开,输入你的应用的包名就可以生成签名码了。(这里注意,你的手机或模拟器里已经安装了你的应用才能获得签名字符串,你可以在刚建好项目的时候再手机或模拟器上运行一次就可以了。)
“授权回调地址” 后面是要用到它的,不过可以随便填一个网址就可以了。"取消授权回调地址“ 跟 ”授权回调地址“ 填同一个。
第三步:创建好应用之后,下载新浪的androidSDK,把里面的 libs目录下的weibosdkcode.jar文件拷到自己项目下的libs文件夹下。
第四步:代码,实现非常简单的获取微博功能。
1.Constans
- public class Constants {
- public static final String APP_KEY = "你的应用的APP_KEY";
- public static final String REDIRECT_URL = "你填的授权回调地址";
- public static final String SCOPE="public_timeline";
- /**
- * Scope 是 OAuth2.0 授权机制中 authorize 接口的一个参数。通过 Scope,平台将开放更多的微博
- * 核心功能给开发者,同时也加强用户隐私保护,提升了用户体验,用户在新 OAuth2.0 授权页中有权利
- * 选择赋予应用的功能。
- *
- * 我们通过新浪微博开放平台-->管理中心-->我的应用-->接口管理处,能看到我们目前已有哪些接口的
- * 使用权限,高级权限需要进行申请。
- *
- * 目前 Scope 支持传入多个 Scope 权限,用逗号分隔。
- *
- * 有关哪些 OpenAPI 需要权限申请,请查看:http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI
- * 关于 Scope 概念及注意事项,请查看:http://open.weibo.com/wiki/Scope
- */
- }
2.MainActivity.java
- public class CopyOfMainActivity extends Activity {
- /** 微博 Web 授权类,提供登陆等功能 */
- private WeiboAuth mWeiboAuth;
- /** 封装了 "access_token","expires_in","refresh_token",并提供了他们的管理功能 */
- private Oauth2AccessToken mAccessToken;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- mWeiboAuth = new WeiboAuth(CopyOfMainActivity.this, Constants.APP_KEY,
- Constants.REDIRECT_URL, Constants.SCOPE);
- mWeiboAuth.anthorize(new AuthListener());
- }
- class AuthListener implements WeiboAuthListener {
- @Override
- public void onComplete(Bundle values) {
- // 从 Bundle 中解析 Token
- mAccessToken = Oauth2AccessToken.parseAccessToken(values);
- if (mAccessToken.isSessionValid()) {
- //授权成功,启动线程
- Thread t = new MyThread(mAccessToken.getToken());
- t.start();
- } else {
- // 当您注册的应用程序签名不正确时,就会收到 Code,请确保签名正确
- String code = values.getString("code");
- String message = "授权失败";
- if (!TextUtils.isEmpty(code)) {
- message = message + "\nObtained the code: " + code;
- System.out.println(message);
- }
- Toast.makeText(CopyOfMainActivity.this, message,
- Toast.LENGTH_LONG).show();
- }
- }
- @Override
- public void onCancel() {
- Toast.makeText(CopyOfMainActivity.this, "取消授权", Toast.LENGTH_LONG)
- .show();
- }
- @Override
- public void onWeiboException(WeiboException e) {
- Toast.makeText(CopyOfMainActivity.this,
- "Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
- .show();
- }
- }
- class MyThread extends Thread {
- public MyThread(String token) {
- this.token = token;
- }
- private String token;
- public void run() {
- //利用token获取微博
- String path = "https://api.weibo.com/2/statuses/friends_timeline.json?access_token="
- + token;
- try {
- URL url = new URL(path);
- HttpURLConnection conn = (HttpURLConnection) url
- .openConnection();
- conn.setRequestMethod("GET");
- conn.setConnectTimeout(10000);
- conn.setReadTimeout(10000);
- int code = conn.getResponseCode();
- if (code == 200) {
- InputStream is = conn.getInputStream();
- InputStreamReader isr = new InputStreamReader(is);
- BufferedReader br = new BufferedReader(isr);
- StringBuffer sb = new StringBuffer();
- String temp = "";
- while ((temp = br.readLine()) != null) {
- sb.append(temp);
- }
- JSONArray jsonarr = new JSONObject(sb.toString())
- .getJSONArray("statuses");
- for (int i = 0; i < jsonarr.length(); i++) {
- JSONObject json = (JSONObject) jsonarr.opt(i);
- String time = (String) json.get("created_at");
- String text = (String) json.get("text");
- JSONObject j = (JSONObject) json.get("user");
- String username = (String) j.get("name");
- System.out.println("---------这是一条微博----------->");
- System.out.println("****发表人:" + username + "****时间:"
- + time + "****");
- System.out.println("内容:");
- System.out.println(text);
- }
- } else {
- System.out.println("->code=" + code);
- }
- } catch (Exception e) {
- System.out.println("error");
- e.printStackTrace();
- }
- }
- }
- }
3.权限声明
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
最终结果:
在MainActivity类代码中会有一个地址:https://api.weibo.com/2/statuses/friends_timeline.json 作为URL对象的地址,这个是获得微博的一个接口,还有其他写微博,评论的接口等等在新浪微博API文档里面都有。变通一下就可以实现其他的功能了。
这篇关于新浪微博android应用开发学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!