- package android.com.myapplication;
- import android.content.Intent;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Toast;
- import com.tencent.connect.UserInfo;
- import com.tencent.connect.auth.QQToken;
- import com.tencent.connect.common.Constants;
- import com.tencent.tauth.IUiListener;
- import com.tencent.tauth.Tencent;
- import com.tencent.tauth.UiError;
- import org.json.JSONException;
- import org.json.JSONObject;
- public class MainActivity extends AppCompatActivity {
- private static final String TAG = "MainActivity";
- private static final String APP_ID = "1106375080";// 官方获取的 APPID
- private Tencent mTencent;
- private BaseUiListener mIUiListener;
- private UserInfo mUserInfo;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- // 传入参数 APPID 和全局 Context 上下文
- mTencent = Tencent.createInstance(APP_ID,MainActivity.this.getApplicationContext());
- }
- public void buttonLogin(View v){
- /** 通过这句代码, SDK 实现了 QQ 的登录, 这个方法有三个参数, 第一个参数是 context 上下文, 第二个参数 SCOPO 是一个 String 类型的字符串, 表示一些权限
- 官方文档中的说明: 应用需要获得哪些 API 的权限, 由, 分隔例如: SCOPE = get_user_info,add_t; 所有权限用 all
- 第三个参数, 是一个事件监听器, IUiListener 接口的实例, 这里用的是该接口的实现类 */
- mIUiListener = new BaseUiListener();
- //all 表示获取所有权限
- mTencent.login(MainActivity.this,"all", mIUiListener);
- }
- /**
- * 自定义监听器实现 IUiListener 接口后, 需要实现的 3 个方法
- * onComplete 完成 onError 错误 onCancel 取消
- */
- private class BaseUiListener implements IUiListener{
- @Override
- public void onComplete(Object response) {
- Toast.makeText(MainActivity.this, "授权成功", Toast.LENGTH_SHORT).show();
- Log.e(TAG, "response:" + response);
- JSONObject obj = (JSONObject) response;
- try {
- String openID = obj.getString("openid");
- String accessToken = obj.getString("access_token");
- String expires = obj.getString("expires_in");
- mTencent.setOpenId(openID);
- mTencent.setAccessToken(accessToken,expires);
- QQToken qqToken = mTencent.getQQToken();
- mUserInfo = new UserInfo(getApplicationContext(),qqToken);
- mUserInfo.getUserInfo(new IUiListener() {
- @Override
- public void onComplete(Object response) {
- Log.e(TAG,"登录成功"+response.toString());
- }
- @Override
- public void onError(UiError uiError) {
- Log.e(TAG,"登录失败"+uiError.toString());
- }
- @Override
- public void onCancel() {
- Log.e(TAG,"登录取消");
- }
- });
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onError(UiError uiError) {
- Toast.makeText(MainActivity.this, "授权失败", Toast.LENGTH_SHORT).show();
- }
- @Override
- public void onCancel() {
- Toast.makeText(MainActivity.this, "授权取消", Toast.LENGTH_SHORT).show();
- }
- }
- /**
- * 在调用 Login 的 Activity 或者 Fragment 中重写 onActivityResult 方法
- * @param requestCode
- * @param resultCode
- * @param data
- */
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if(requestCode == Constants.REQUEST_LOGIN){
- Tencent.onActivityResultData(requestCode,resultCode,data,mIUiListener);
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
- }
来源: http://blog.csdn.net/z979451341/article/details/77585004