QQ授权登陆其实,在现在的APP中也是非常常见的,今天我们主要探讨一下QQ原生授权登陆的那些事。

首先,我们得去qq开放平台上去注册申请,传送门http://open.qq.com/,如下点击:

然后我们进行相关的创建我们的应用,如下所示:

完善相关的信息,提交审核等等,这里面我们最重要的就是APP ID,以及APP KEY,前期工作准备好,我们进行我们的接入工作:

首先,我们先看看官方的开发文档,http://wiki.open.qq.com/wiki/QQ%E7%94%A8%E6%88%B7%E8%83%BD%E5%8A%9B,图示如下:

其中,标注箭头的地方使我们最需要使用的,关于SDk下载的话,由于我们只牵扯到QQ的登陆,没有需要太多的东西,所以我们只需要下载基础包既可以,最新的最下:

附:基础包、全量包对比:

OpenSdk从2.4版本开始,在原有接口的基础之上,提炼重要及常用接口,生成基础包对应包名如下:
全量包:open_sdk_r****.jar
基础包:open_sdk_r****_lite.jar基础包包含接口:
1、登陆相关接口
2、获取用户信息接口
3、定向分享接口
    a、分享给QQ好友
    b、分享给Qzone好友
4、社交类API
    a、邀请好友
    b、应用分享
    c、发送请求/礼物包大小
全量包:514K
基础包:254K

下载完基础包后,解压后如下:

直接导入到studio libs中,添加as Library

配置AndroidManifest
在应用的AndroidManifest.xml增加配置的节点下增加以下配置(注:不配置将会导致无法调用API);


<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><application>
<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="tencent你的AppId" />
</intent-filter>
</activity>
<application>//SDK_V2.0引入了AssistActivity,开发者需在androidManifest.xml中注册。代码如下:<activity android:name="com.tencent.connect.common.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"
/>//这个必须有,吐槽一下,腾讯的文档太old了<activity
            android:name="com.tencent.tauth.AuthActivity"android:launchMode="singleTask"android:noHistory="true"><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" />//其中的100000是你申请的APP ID,替换成自己的即可<data android:scheme="tencent100000" /></intent-filter></activity>

我们来看看腾讯qq的创建实例并回调文档:

那么我们照着开发文档走,就完全可以搞定了,具体代码如下,自己封装成了工具类:

public class QQLogin {public static Tencent mTencent;private Activity mActivity;private QQLogin() {mTencent = Tencent.createInstance(Constants.QQAPPID,Application.getContext());}private static class SingTonHolder {/* 静态初始化器,由JVM来保证线程安全 */private static QQLogin instance = new QQLogin();}public static QQLogin getInstance() {return SingTonHolder.instance;}public void qq_loginout(Activity activity) {this.mActivity = activity;if (mTencent == null) {mTencent = Tencent.createInstance(Constants.QQAPPID, Application.getContext());}mTencent.logout(mActivity);}public void qq_login(Activity activity) {this.mActivity = activity;if (mTencent == null) {mTencent = Tencent.createInstance(Constants.QQAPPID, Application.getContext());}if (!mTencent.isSessionValid()) {mTencent.login(mActivity, "all", new LoginUiListener(mActivity));}}}

LoginUiListener

public class LoginUiListener implements IUiListener {private Activity activity;public LoginUiListener(Activity activity) {this.activity = activity;}@Overridepublic void onComplete(Object o) {String result = o.toString();QQloginResultInfo loginInfo = JSON.parseObject(result, QQloginResultInfo.class);final String openid = loginInfo.getOpenid();final String access_token = loginInfo.getAccess_token();QQLogin.mTencent.setOpenId(openid);QQLogin.mTencent.setAccessToken(loginInfo.getAccess_token(), String.valueOf(loginInfo.getExpires_in()));UserInfo userInfo = new UserInfo(XApplication.getContext(), QQLogin.mTencent.getQQToken());userInfo.getUserInfo(new IUiListener() {@Overridepublic void onComplete(Object o) {Log.e("xxxx", o.toString());//自此我们就可以获取到相关的用户信息,进行我们自己的相关业务逻辑操作QQuserinfo userinfo = JSON.parseObject(o.toString(), QQuserinfo.class);String nickname = userinfo.getNickname();String avatar = userinfo.getFigureurl_qq_2();}@Overridepublic void onError(UiError uiError) {}@Overridepublic void onCancel() {}});}@Overridepublic void onError(UiError uiError) {}@Overridepublic void onCancel() {}

不要忘记在相应的activity中的onActivityResult()方法中添加:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {//这里的11101,是调用腾讯sdk是,有日志输出的请求码if (requestCode == 11101) {Tencent.onActivityResultData(requestCode, resultCode, data, new LoginUiListener(this));}super.onActivityResult(requestCode, resultCode, data);}

Android第三方登陆之QQ篇(原生登陆授权)相关推荐

  1. 大叔也说Xamarin~Android篇~原生登陆与WebView的网站如何共享Session

    回到目录 事情是这样的,我们最近开了一个APP,主要使用xamarin做了一个登陆,它与服务器API进行数据通讯,当用户名密码正确去,跳转到新的activity,并在webview控件中打开服务端的H ...

  2. android qq登录分析,Android第三方登录之QQ登录

    1. 在腾讯开放平台创建应用,申请Appkey qqdenglu.PNG 2. 下载sdk ,导入jar包 3.配置AndroidManifest android:name="com.ten ...

  3. Android第三方登陆之新浪微博Weibo篇(原生登陆授权)

    前言 Android第三方登录可以说是非常的常见,今天主要先说一下新浪微博第三方登陆授权. SDK版本支持 SDK v3.0已经发布了支持iPhone和Android的版本. 须将你的应用的包名签名信 ...

  4. Android第三方登录签名错误,关于应用签名修改后第三方微信登陆不了的问题

    android员工离职后,今天重新生成了打包的key算是以防万一吧. 再次运行程序的时候发现第三方微信登陆不了. 第一步:打包程序并查看微信开放平台的应用签名是否正确. 使用新的签名打包程序 同时运行 ...

  5. 第三方授权登陆(QQ)

    第三方授权登陆(QQ) QQ授权: 1.下载SDK:QQ互联SDK官网,注册开发者,创建应用,等待审核通过,获取appid;(测试用的appid为:tencent222222); ***备注:在QQ互 ...

  6. 如何在Android手机中开发QQ账户登陆功能的应用

    2019独角兽企业重金招聘Python工程师标准>>> 背景 OAUTH 开发授权协议,为用户资源的授权提供了一个安全开放而又简易的标准.可以使用第三方的账户登陆另一个方的 应用或服 ...

  7. Qt 之 模仿 QQ登陆界面——功能篇(一)

    一.简述 今天是2017年第一篇技术文章,12月末事情太多,一直没来得及更新博客.今天继 Qt 之 模仿 QQ登陆界面--样式篇 这一篇 来简单地看一下对登录界面做的一些功能,主要是登录用户下拉列表和 ...

  8. Android三方登陆之QQ,微信,微博登录及注意事项

    简介 在我们的应用中,一般都有三方登录这个功能,对于这个常用的功能,我们一般会有如下处理方式 导入三方sdk,按照文档开发 使用如ShareSDK类三方组件来实现 ShareSDK 官方Demo: T ...

  9. Android友盟集成QQ登陆详解大全

    第一步打开友盟官网注册一个账号,登录如下图进行操作点击个人中心 进入下一个界面点击管理创建一个应用生成AppKey:如下图 返回首页点击SDK与文档点击进行第三方登录集成点击右边的SDK下载选择你需要 ...

最新文章

  1. HashMap之tableSizeFor
  2. 预训练模型:BERT深度解析《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》
  3. matlab子函数调用变量,matlab中,怎么样用function自定义函数调用另一个函数名为输入?...
  4. 利用Python爬虫刷新某网站访问量
  5. 是时候该了解一波Protocol Buffers了[Java]
  6. javascript事件代理(Event Delegation)
  7. 区块链架构与应用(区块链入门篇)
  8. 2018上半年游戏行业DDoS态势报告
  9. 55道django面试题
  10. 转换小写金额为大写金额
  11. pillow图像格式转化和缩放操作
  12. 搭建简单的智能家居语音控制系统:树莓派+唤醒词+esp8266
  13. Impala 解决Invalid argument: Client connection negotiation failed异常
  14. Spark独到见解--Action算子总结
  15. 【正则】常用正则公式
  16. linux常用运维shell,常用的shell命令,持续更新 | linux运维小站–linux系统架构_服务器运维_Linux运维工程师工作手札...
  17. python 修改图片尺寸 留白_python等比压缩图片到固定大小,不足的留白
  18. 港中深、华为联合培养,韩晓光课题组招收三维视觉数字人方向博士生
  19. TensorFlow Lite 开发手册(5)——TensorFlow Lite模型使用实例(分类模型)
  20. 电子设计教程40:软启动电路-串联NTC热敏电阻

热门文章

  1. 基于labview的温湿度数据采集_基于Raspberry Pi(树莓派)的MCC数据采集卡应用
  2. 如何锁定计算机密码,如何设置电脑密码锁详细方法
  3. 数组旋转问题【有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数】
  4. zoj 1560 Hansel and Grethel(求两条直线的交点)
  5. 【小程序源码】趣味娱乐趣味制作,藏头诗,隐藏图
  6. Maven学习(十四)profile标签
  7. asp.net中iframe详细用法
  8. Clickhouse 物化视图 MATERIALIZED VIEW
  9. DIV六种实现元素水平居中
  10. vuedraggable的使用