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() {

        }
    };

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

时间: 2024-08-14 09:40:51

Android第三方QQ登录并获取QQ用户信息的相关文章

集成微信第三方登录功能获取微信用户信息

最近公司要做微信的第三方登录,本来打算直接用第三方的框架就算了,就闲的想自己集成试试看. 然后发现被腾讯坑得不省人事. 前提,应用必须要在微信开发平台上注册,并且通过审核,有微信登录的权限. 首先,下载官方的demo.把libs的jar包拷到自己的工程里. 在应用的包名下,建一个wxapi的包目录,在里建一个叫WXEntryActivity的activity并实现IWXAPIEventHandler监听,用于微信回调数据! 下面是我自己的WXEntryActivity,OnUserInfoLis

MingQQ Android版发布了,可以在Android手机上登录你的QQ,收发消息哦...

最近为了学习Android开发,特意将原来写的MingQQ Windows版移植到了Android上面,以此练手.通过这次练习,学习到了不少Android开发的相关知识,特别是界面开发部分. MingQQ的界面模仿了Android QQ的基本功能,虽然体验性完全比不上QQ,但目前技术有限,只能做到现在这水平了,更好的界面用户体验留待以后再提升吧. 下拉刷新目前使用了第三方开源库Android-PullToRefresh,以后再考虑替换成自己写的下拉刷新组件,并增加消息列表的右滑删除功能. 发布的

Android 微信登录昵称乱码问题,及获取微信用户信息

微信第三方登录时昵称,username乱码问题解决方法如下: /** * 获取微信用户信息 * @param access_token 调用凭证 * @param openid 普通用户的标识,对当前开发者帐号唯一 * @return */ public static String getWeixinUserinfo(String access_token, String openid){ String URLs = ChildendConstant.WEIXIN_USERINFO;//微信登录

Magicodes.WeiChat——使用OAuth 2.0获取微信用户信息

使用Magicodes.WeiChat,可以很方便的获取到微信用户的信息.在使用OAuth 2.0之前,你先需要做以下操作: 1)在开发者中心修改[网页授权获取用户基本信息],在弹出的界面输入自己的根域名.比如:weichat.chinacloudsites.cn 如下图所示: 2)配置菜单或者链接(如果使用特性“WeChatOAuth”,本步骤可以略过,这里只是介绍下原理,具体请参考步骤3的说明).Magicodes.WeiChat在控制器WeiChatController中进行处理,配置路径

小白学react之网页获取微信用户信息

通过上一篇<小白学react之EJS模版实战>我们学习了如何通过EJS模版生成我们高定制化的index.html文件. 本篇我们将会继续延续我们的alt-tutorial项目的实战计划,去获取微信扫码用户的信息,并将头像显示在我们页面的右上角上. 最终实战效果将如下所示. 首先根据我们的网站url生成二维码,比如我们可以通过浏览器的FeHelper来生成: 然后用户通过微信扫码: 最后用户确定授权后获取到用户的基本信息,并将头像显示在右上角: 1. 内网穿透准备 我们获取微信用户信息的过程中,

【Android Developers Training】 99. 获取联系人详细信息

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer.android.com/training/contacts-provider/retrieve-details.html 这节课将会展示如何获取一个联系人的详细数据,比如电子邮件地址,电话号码,等等.当用户获得一个联系人后,他会想要查看他的详细信息.你可以展示给他们所有的信息,或者只展示某一特定类

通过Javascript Facebook API获取Facebook用户信息,以及当前用户的好

在使用APP之前需要先生成Facebook APP ID 这不必多说. 生成Facebook APP ID之后 在javascript中 初始化Facebook信息 而且我定义了一些我需要获取获取数据的全局变量 <script language="javascript" type="text/javascript"> //这是我们要获取的信息变量 var facebookId; var facebookName; var facebookProfileI

python flask获取微信用户信息报404,nginx问题

在学习flask与微信公众号时问题,发现测试自动回复/wechat8008时正常,而测试获取微信用户信息/wechat8008/index时出现404.查询资料后收发是nginx配置问题. 在location后面加上=是严格匹配,url后面必须完全一至,不加等号则是只要url是以该信息开头就匹配成功.所以去掉等号,重启nginx正常. 将 location = /wechat8008 {改为 location /wechat8008 { 重启nginx sudo /usr/local/nginx

Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取个人信息)

1. 获取百度个人信息(使用Gson解析): 2. 代码案例: (1)工程一览图,如下: (2)activity_main.xml: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent