android接入QQ原生登录功能

受限申请一个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);
        }
    }





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值