sdk下载地址:http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD
下载好导入项目中。
在开放平台拿到App_Id:
private Tencent mTencent;
private String APP_ID = "1107203056";//App的App_Id
private IUiListener loginListener;
private String SCOPE = "all";
private IUiListener userInfoListener;
在view层的java文件中添加以下代码:
//初始化QQ登录分享的需要的资源
private void initQqLogin() {
mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext());
//创建QQ登录回调接口
loginListener = new IUiListener() {
@Override
public void onComplete(Object o) {
//登录成功后调用的方法
JSONObject jo = (JSONObject) o;
Toast.makeText(QQActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
Log.e("COMPLETE:-------->", jo.toString());
String openID;
try {
openID = jo.getString("openid");
String accessToken = jo.getString("access_token");
String expires = jo.getString("expires_in");
mTencent.setOpenId(openID);
mTencent.setAccessToken(accessToken, expires);
} catch (JSONException e) {
e.printStackTrace();
} }
@Override
public void onError(UiError uiError) {
//登录失败后回调该方法
Toast.makeText(QQActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
Log.e("LoginError:", uiError.toString());
}
@Override
public void onCancel() {
//取消登录后回调该方法
Toast.makeText(QQActivity.this, "取消登录", Toast.LENGTH_SHORT).show();
}
};
userInfoListener = new IUiListener() {
@Override
public void onComplete(Object o) {
if(o == null){
return;
}
try {
JSONObject jo = (JSONObject) o;
Log.e("JO:",jo.toString());
int ret = jo.getInt("ret");
String nickName = jo.getString("nickname");
String gender = jo.getString("gender");
String qq_2 = jo.getString("figureurl_qq_2");
// edit.putString("ret",ret+"");
// edit.putString("nickName",nickName);
// edit.putString("qq_2",qq_2);
// edit.commit();
Log.e("ret","-------->"+ret);
Toast.makeText(QQActivity.this, "你好," + nickName,Toast.LENGTH_LONG).show();
} catch (Exception e) {
}
}
@Override
public void onError(UiError uiError) {
}
@Override
public void onCancel() {
}
};
}
重写这个方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == Constants.REQUEST_LOGIN) {
if (resultCode == -1) {
Tencent.onActivityResultData(requestCode, resultCode, data, loginListener);
Tencent.handleResultData(data, loginListener);
UserInfo info = new UserInfo(this, mTencent.getQQToken());
info.getUserInfo(userInfoListener);
startActivity(new Intent(this, MainActivity.class));
finish();
}
}
}
依次导包
在需要的点击事件中添加:
initQqLogin();
mTencent.login(this, SCOPE, loginListener);
在清单文件中
<!-- 注册SDKActivity --> <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent1105602574" /> <!-- 开放平台获取的APPID --> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:screenOrientation="portrait"/>