关于qq第三方登录一些问题!无法获取信息等等

今天用到qq第三方登录 , 遇到一些问题

记录下来,防止忘记

SDK下载地址或者自己选择所需要的

然后导入到自己的项目

只记录一些关键代码:

qqLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mTencent.logout(context);
                if (!mTencent.isSessionValid()) {
                    mTencent.login(LoginActivity.this, "all", loginListener);
                }
            }
        });
    /**
     * qq Login
     */
    IUiListener loginListener = new IUiListener() {
        @Override
        public void onComplete(Object o) {
            Log.i(TAG, "iUiListener:" + o.toString());
            String json = o.toString();
            try {
                JSONObject rst = new JSONObject(json);
                String token = rst.getString(Constants.PARAM_ACCESS_TOKEN);
                String expires = rst.getString(Constants.PARAM_EXPIRES_IN);
                IMservice.openId = rst.getString(Constants.PARAM_OPEN_ID);
                //**下面这两步设置很重要,如果没有设置,返回为空**
                mTencent.setOpenId(IMservice.openId);
                mTencent.setAccessToken(token, expires);
                getuserInfo();
            } catch (JSONException e) {
                e.printStackTrace();
            }


        }

        @Override
        public void onError(UiError uiError) {
            Log.i(TAG, "iUiListener:" + uiError.toString());
		//这里就只是个Toast,我整合了
            ToastUtils.ToastShow(context, "登录失败,请稍后再试");
        }

        @Override
        public void onCancel() {
            Log.i(TAG, "取消登录");
            mTencent.logout(context);
            ToastUtils.ToastShow(context, "登录取消");
        }
    };

    private void getuserInfo() {
        ThreadUtils.runInThread(new Runnable() {
            @Override
            public void run() {
                qqInfo = new UserInfo(LoginActivity.this, mTencent.getQQToken());
                qqInfo.getUserInfo(getQQinfoListener);
            }
        });
    }

    IUiListener getQQinfoListener = new IUiListener() {
        @Override
        public void onComplete(Object o) {
            ToastUtils.ToastShow(context,"getQQinfoListener:"+ o.toString());
            Log.i(TAG, "getQQinfoListener:" + o.toString());
        }

        @Override
        public void onError(UiError uiError) {
            ToastUtils.ToastShow(context, "登录失败,请稍后再试");
        }

        @Override
        public void onCancel() {
            mTencent.logout(context);
            ToastUtils.ToastShow(context, "登录取消");
        }
    };

    /**
     * qq Login  End
     */





配置文件记得加上:


        
            
                

                
                

                
		
            
        
        

        
添加权限








到这里,我运行一直得不到qq信息....找了好久,才知道  ..

//应用调用Andriod_SDK接口时,如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法中增加如下代码:
        //其中onActivityResultData接口中的listener为当前调用的Activity所实现的相应回调UIListener。
        Tencent.onActivityResultData(requestCode, resultCode, data, loginListener);


END .....   可能有些没说清楚,代码有点乱...如果有问题,麻烦提出了  谢谢  

你可能感兴趣的:(Android)