android 第三方应用-新浪微博授权

来源:互联网 发布:有向图的关联矩阵 编辑:程序博客网 时间:2024/05/17 23:30

微博第三方登录。将框架和jar包导入,分为三步可以使用。本篇是简单的登录,发表微博,读取最新微博


1.授权:

//授权登录    String appKey = "355856";//keyString redirectUrl = "http://www.baidu.com";//这是回调的网址String scope = "all";//授权选项为所有WeiboAuth auth = new WeiboAuth(this, appKey, redirectUrl, scope);auth.authorize(new WeiboAuthListener() {
public void onComplete(Bundle arg0) {//这个方法是授权返回的数据

2.认证

//认证请求String url = "https://api.weibo.com/oauth2/access_token";//微博提供接口的地址String httpMethod = "POST";//请求方式WeiboParameters params = new WeiboParameters();//请求参数params.add("client_id", "3558572486");params.add("client_secret", "e4c1505d8d2004ac04223fb6bd038a0e");params.add("grant_type", "authorization_code");params.add("code", string);params.add("redirect_uri", "http://www.baidu.com");AsyncWeiboRunner.request(url, params, httpMethod,new RequestListener() {

public void onComplete(String response) {//这个方法是认证通过

3.登录

<span></span>Log.i("zzz", response);//Json格式解析JSONObject json = new JSONObject(response);String token = json.getString("access_token");//根据官方解释,如果是atho认证必须有这个

package com.example.weibotest;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.ParseException;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import org.json.JSONException;import org.json.JSONObject;import com.example.oaut.AsyncWeiboRunner;import com.example.oaut.RequestListener;import com.sina.weibo.sdk.auth.WeiboAuth;import com.sina.weibo.sdk.auth.WeiboAuthListener;import com.sina.weibo.sdk.auth.WeiboParameters;import com.sina.weibo.sdk.exception.WeiboException;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;public class Mainactivity extends Activity {@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);}    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_mainactivity);    }    public void oauth(View v){    //授权登录    String appKey = "3558572486";//keyString redirectUrl = "http://www.baidu.com";//这是回调的网址String scope = "all";//授权选项为所有WeiboAuth auth = new WeiboAuth(this, appKey, redirectUrl, scope);auth.authorize(new WeiboAuthListener() {@Overridepublic void onWeiboException(WeiboException arg0) {// TODO Auto-generated method stub}@Overridepublic void onComplete(Bundle arg0) {//这个方法是授权返回的数据String string = arg0.getString("code");//返回的数据是code//认证请求String url = "https://api.weibo.com/oauth2/access_token";//微博提供接口的地址String httpMethod = "POST";//请求方式WeiboParameters params = new WeiboParameters();//请求参数params.add("client_id", "3558572486");params.add("client_secret", "e4c1505d8d2004ac04223fb6bd038a0e");params.add("grant_type", "authorization_code");params.add("code", string);params.add("redirect_uri", "http://www.baidu.com");AsyncWeiboRunner.request(url, params, httpMethod,new RequestListener() {@Overridepublic void onIOException(IOException e) {}@Overridepublic void onError(WeiboException e) {}@Overridepublic void onComplete4binary(ByteArrayOutputStream responseOS) {// TODO Auto-generated method stub}@Overridepublic void onComplete(String response) {//这个方法是认证通过try {Log.i("zzz", response);//Json格式解析JSONObject json = new JSONObject(response);String token = json.getString("access_token");//必须有String uid = json.getString("uid");//当前授权用户的uidLog.i("zzz", "token:"+token);poseWeibo(token);//发表微博getWeibo(token);//获取微博内容} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private void getWeibo(String token) {//搭建客户端HttpClient client = new DefaultHttpClient();//请求方式//get请求时要加连接符获取数据HttpGet get = new HttpGet("https://api.weibo.com/2/statuses/public_timeline.json?token="+token);try {//响应请求获得数据HttpResponse response = client.execute(get);//将数据转换成实体数据String entity = EntityUtils.toString(response.getEntity(),"UTF-8");//查看数据Log.i("zzz", entity);} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void poseWeibo(String token) {//搭建客户端HttpClient client = new DefaultHttpClient();//请求方式HttpPost post = new HttpPost("https://api.weibo.com/2/statuses/update.json");//定义携带的实体数据List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();parameters.add(new BasicNameValuePair("access_token",token));parameters.add(new BasicNameValuePair("status", "这是测试02"));//发表微博。字段status为true必填HttpEntity entity = null;try { entity = new UrlEncodedFormEntity(parameters,"UTF-8");//必须设置否则是乱码} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}//绑定实体数据post.setEntity(entity);//客户端响应请求HttpResponse response = null;try { response = client.execute(post);} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//返回实体对象String enti=null;try { enti = EntityUtils.toString(response.getEntity(), "UTF-8");} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}});}@Overridepublic void onCancel() {// TODO Auto-generated method stub}}, WeiboAuth.OBTAIN_AUTH_CODE);    }}

0 0
原创粉丝点击