Android第三方QQ登录并获取QQ用户信息

首先我们需要去腾讯开放平台申请账号,然后创建应用,地址(http://open.qq.com/)
下载我们应用中所需要的jar包,包括两个
open_sdk_r5509.jar
mta_sdk-1.6.2.jar
1.加载完成将jar包放入我们的工程libs目录下
使用eclipse直接设置build path
使用Android studio 需要选中右键 --->add is library

2.做完这步之后我们在AndroidManifest.xml文件中去配置引用
 <activity  android:name=".activity.AuthActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="portrait"/>`这里写代码片`
        <activity  android:name=".activity.officeAuthActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="portrait"/>
        <activity  android:name="com.tencent.tauth.AuthActivity" android:noHistory="true" android:launchMode="singleTask" >
            <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="你申请的APPID" />
            </intent-filter>
        </activity>
        <activity android:name="com.tencent.connect.common.AssistActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize" />
    3.下面就是我们在activity中添加代码
    1)初始化Tencent这个类
     if (null==mTencent){
        mTencent = Tencent.createInstance("你的APPID",this);
    }
    2)添加登录点击事件
     if (!mTencent.isSessionValid()) {
                mTencent.login(this, "all", qqListener);
            }
     3)处理QQ登录监听回调
     在onActivityResult()中去 
     if (requestCode == Constants.REQUEST_LOGIN ||
            requestCode == Constants.REQUEST_APPBAR) {
        Tencent.onActivityResultData(requestCode, resultCode, data, qqListener);
    }  
qqListener接口回调:
 private IUiListener qqListener = new BaseUiListener(){
        @Override
        protected void doComplete(JSONObject values) {
            //super.doComplete(values);
            initLoginID(values);
        }
    };

实现接口:

private class BaseUiListener implements IUiListener {

        protected void doComplete(JSONObject values) {
        }
        @Override
        public void onComplete(Object response) {
            if (null == response) {
                Util.showAlert(LoginActivity.this, "返回为空", "登录失败");
                return;
            }
            JSONObject jsonResponse = (JSONObject) response;
            if (null != jsonResponse && jsonResponse.length() == 0) {
                Util.showAlert(LoginActivity.this, "返回为空", "登录失败");
                return;
            }
           doComplete((JSONObject)response);
        }

        @Override
        public void onError(UiError e) {

        }
        @Override
        public void onCancel() {

        }
    }
 **到这里登录过程已经完成**
 下面就是如何获取QQ用户信息
  /** * 获取qq信息 * @param jsonObject */
    private void initLoginID(JSONObject jsonObject) {
        try {
            if (jsonObject.getInt("ret")==0) {
                String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);
                String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);
                String openID = jsonObject.getString(Constants.PARAM_OPEN_ID);
                //**下面这两步设置很重要,如果没有设置,返回为空**
                mTencent.setOpenId(openID);
                mTencent.setAccessToken(token, expires);
                getuserInfo();
            }
        } catch (JSONException e) {
            e.printStackTrace();

        }
    }

    private void getuserInfo() {
        qqInfo = new UserInfo(LoginActivity.this,mTencent.getQQToken());
        qqInfo.getUserInfo(getQQinfoListener);
    }
    /** * 获取用户信息 */
    private IUiListener getQQinfoListener = new IUiListener() {
        @Override
        public void onComplete(Object response) {
            try {
                JSONObject jsonObject = (JSONObject) response;
                Logger.i("qq用户信息",jsonObject.toString());
              //处理自己需要的信息
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onError(UiError uiError) {

        }

        @Override
        public void onCancel() {

        }
    };

到这里就全部结束,希望能给到大家帮助!!!!!!

你可能感兴趣的:(android,qq,腾讯开放平台)