受限申请一个APPID,,APPID登录QQ互联官网进行获取,我这人不喜欢说废话,直接说比较重要的
首先,创建一个登录实例
private Tencent mTencent;
private static String QQ_APPID = "1105957171";
private BaseUiListener uiListener;
然后实例化这个实例//创建QQ登录实例 mTencent = Tencent.createInstance(QQ_APPID, this.getApplicationContext()); uiListener = new BaseUiListener(); //all:只获得哪些API的权限 mTencent.login(LoginActivity.this, "all", uiListener);
/** * 调用该接口实现登录、快速支付登录、应用分享、应用邀请等接口,需传入该回调的实例 */ private class BaseUiListener implements IUiListener { @Override public void onComplete(final Object reponse) { JSONObject jsonObject = (JSONObject) reponse; try { //获取用户的openid openId = jsonObject.getString("openid"); String expirs = jsonObject.getString("expires_in"); String access_token = jsonObject.getString("access_token"); mTencent.setOpenId(openId); mTencent.setAccessToken(access_token, expirs); QQToken qqToken = mTencent.getQQToken(); userInfo = new UserInfo(getApplicationContext(), qqToken); userInfo.getUserInfo(new IUiListener() { @Override public void onComplete(Object o) { if (o == null) { return; } JSONObject json = (JSONObject) o; try { int ret = json.getInt("ret"); //获取用户信息 nickname = json.getString("nickname"); String gender = json.getString("gender"); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(UiError uiError) { Toast.makeText(LoginActivity.this, "登录失败:" + uiError.toString(), Toast.LENGTH_SHORT).show(); } @Override public void onCancel() { Toast.makeText(LoginActivity.this, "登录取消:", Toast.LENGTH_SHORT).show(); } }); Log.d("TAG", nickname + ";" + expirs + ";" + access_token); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(UiError uiError) { Toast.makeText(LoginActivity.this, uiError.errorCode + ";" + uiError.errorMessage, Toast.LENGTH_SHORT).show(); } @Override public void onCancel() { } }
登录之后要有一个回调 ,不然你点击登录按钮的时候是没有任何fany
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == Constants.REQUEST_LOGIN) { Tencent.onActivityResultData(requestCode, resultCode, data, uiListener); super.onActivityResult(requestCode, resultCode, data); } }