java获取qq登陆信息_使用腾讯开发平台获取QQ用户数据资料

该博客展示了如何在Java中使用腾讯开放平台的API来实现QQ登录,并获取用户的昵称和头像信息。首先,实例化Tencent对象并设置监听器进行登录操作。登录成功后,通过Volley库发送GET请求获取用户信息,解析JSON数据,最后显示用户昵称和加载头像。
摘要由CSDN通过智能技术生成

packagecom.example.loginbyqq;importjava.io.BufferedInputStream;importjava.io.IOException;importjava.io.InputStream;importjava.net.HttpURLConnection;importjava.net.MalformedURLException;importjava.net.URL;importorg.json.JSONException;importorg.json.JSONObject;importandroid.annotation.SuppressLint;importandroid.app.Activity;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.os.AsyncTask;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.util.Log;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.ImageView;importandroid.widget.TextView;importandroid.widget.Toast;importcom.android.volley.Request;importcom.android.volley.RequestQueue;importcom.android.volley.Response;importcom.android.volley.VolleyError;importcom.android.volley.toolbox.JsonObjectRequest;importcom.android.volley.toolbox.Volley;importcom.tencent.tauth.IUiListener;importcom.tencent.tauth.Tencent;

@SuppressLint("HandlerLeak")public class MainActivity extends Activity implementsOnClickListener{privateButton btn_LoginQQ;privateTencent mTencent;public String APP_ID = "Your APPID";privateTextView user_nickname;privateImageView user_photo;privateIUiListener listener;privateString nickName , figureurl;private static final int SUCCESS = 0;private static final int FAILED = 1;private Handler mHandler=newHandler(){public voidhandleMessage(Message msg) {switch(msg.what) {caseSUCCESS:

String nick=(String) msg.obj;

user_nickname.setText(nick);break;caseFAILED:

Toast.makeText(MainActivity.this, "获取数据失败", Toast.LENGTH_SHORT).show();break;

}

};

};

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mTencent= Tencent.createInstance(APP_ID, this.getApplicationContext()); //实例化对象

initView();

}/*** 初始化视图*/

private voidinitView() {

btn_LoginQQ=(Button) findViewById(R.id.btn_LoginQQ);

btn_LoginQQ.setOnClickListener(this);

user_photo=(ImageView) findViewById(R.id.user_logo);

user_nickname=(TextView) findViewById(R.id.user_nickname);

}

@Overridepublic voidonClick(View v) {switch(v.getId()) {caseR.id.btn_LoginQQ:

login();break;

}

}/*** 登陆*/

private voidlogin() {

mTencent= Tencent.createInstance(APP_ID, this.getApplicationContext()); //创建实例

if(!mTencent.isSessionValid()){

listener=newBaseUiListener(){

@Overridepublic voidonComplete(Object object) {

JSONObject json=(JSONObject) object;

getUserInfoByVolley(json);

}

};

mTencent.login(this, "all", listener);

}

}/*** 使用Volley解析json数据

*@paramjson*/

protected voidgetUserInfoByVolley(JSONObject json) {try{

String openid=json.getString("openid");

String access_token=json.getString("access_token");

Log.e("TAG--->Openid",openid);

Log.e("TAG--->Openid",access_token);

String url="http://119.147.19.43/v3/user/get_info?openid="+openid+"&openkey="+access_token+"&pf=qzone&appid=1104812858&format=json&userip=10.0.0.1&sig=C3BGTm24S%2FZJdt1J%2BjfEzRpCLWA%3D";/*** 使用Volley框架得到json数据

* tag :https://github.com/adamrocker/volley

*/RequestQueue requestQueue=Volley.newRequestQueue(MainActivity.this); //用于获取一个Volley的请求对象

JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, url, null,new Response.Listener() {

@Overridepublic voidonResponse(JSONObject json) {/*** 解析json数据*/

try{

nickName=json.getString("nickname"); //昵称

figureurl=json.getString("figureurl"); //头像的url//TODO 通过异步任务处理图片

newNewAsyncTask().execute(figureurl);//mHandler.obtainMessage(SUCCESS, nickName).sendToTarget();

}catch(JSONException e) {

e.printStackTrace();

}

}

},newResponse.ErrorListener() {

@Overridepublic voidonErrorResponse(VolleyError arg0) {

Log.e("error","问题~~");

mHandler.obtainMessage(FAILED).sendToTarget();

}

});

requestQueue.add(jsonObjectRequest);//在请求队列中加入当前的请求

}catch(JSONException e) {

e.printStackTrace();

}

}/*** 异步任务加载图片

*@authormonster*/

class NewAsyncTask extends AsyncTask{

@OverrideprotectedBitmap doInBackground(String... params) {

String url=params[0];returngetBitmapByUrl(url);

}

@Overrideprotected voidonPostExecute(Bitmap result) {super.onPostExecute(result);

user_photo.setImageBitmap(result);

}

}/*** 通过url 得到bitmap对象

*@paramurlString

*@return

*/

publicBitmap getBitmapByUrl(String urlString) {

Bitmap bitmap;

InputStream is= null;try{

URL url=newURL(urlString);

HttpURLConnection connection=(HttpURLConnection) url.openConnection();

is=newBufferedInputStream(connection.getInputStream());

bitmap=BitmapFactory.decodeStream(is);

connection.disconnect();//关闭连接

returnbitmap;

}catch(MalformedURLException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{try{

is.close();

}catch(IOException e) {

e.printStackTrace();

}

}return null;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值