Android第三方登陆之QQ篇(原生登陆授权)
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篇(原生登陆授权)相关推荐
- 大叔也说Xamarin~Android篇~原生登陆与WebView的网站如何共享Session
回到目录 事情是这样的,我们最近开了一个APP,主要使用xamarin做了一个登陆,它与服务器API进行数据通讯,当用户名密码正确去,跳转到新的activity,并在webview控件中打开服务端的H ...
- android qq登录分析,Android第三方登录之QQ登录
1. 在腾讯开放平台创建应用,申请Appkey qqdenglu.PNG 2. 下载sdk ,导入jar包 3.配置AndroidManifest android:name="com.ten ...
- Android第三方登陆之新浪微博Weibo篇(原生登陆授权)
前言 Android第三方登录可以说是非常的常见,今天主要先说一下新浪微博第三方登陆授权. SDK版本支持 SDK v3.0已经发布了支持iPhone和Android的版本. 须将你的应用的包名签名信 ...
- Android第三方登录签名错误,关于应用签名修改后第三方微信登陆不了的问题
android员工离职后,今天重新生成了打包的key算是以防万一吧. 再次运行程序的时候发现第三方微信登陆不了. 第一步:打包程序并查看微信开放平台的应用签名是否正确. 使用新的签名打包程序 同时运行 ...
- 第三方授权登陆(QQ)
第三方授权登陆(QQ) QQ授权: 1.下载SDK:QQ互联SDK官网,注册开发者,创建应用,等待审核通过,获取appid;(测试用的appid为:tencent222222); ***备注:在QQ互 ...
- 如何在Android手机中开发QQ账户登陆功能的应用
2019独角兽企业重金招聘Python工程师标准>>> 背景 OAUTH 开发授权协议,为用户资源的授权提供了一个安全开放而又简易的标准.可以使用第三方的账户登陆另一个方的 应用或服 ...
- Qt 之 模仿 QQ登陆界面——功能篇(一)
一.简述 今天是2017年第一篇技术文章,12月末事情太多,一直没来得及更新博客.今天继 Qt 之 模仿 QQ登陆界面--样式篇 这一篇 来简单地看一下对登录界面做的一些功能,主要是登录用户下拉列表和 ...
- Android三方登陆之QQ,微信,微博登录及注意事项
简介 在我们的应用中,一般都有三方登录这个功能,对于这个常用的功能,我们一般会有如下处理方式 导入三方sdk,按照文档开发 使用如ShareSDK类三方组件来实现 ShareSDK 官方Demo: T ...
- Android友盟集成QQ登陆详解大全
第一步打开友盟官网注册一个账号,登录如下图进行操作点击个人中心 进入下一个界面点击管理创建一个应用生成AppKey:如下图 返回首页点击SDK与文档点击进行第三方登录集成点击右边的SDK下载选择你需要 ...
最新文章
- HashMap之tableSizeFor
- 预训练模型:BERT深度解析《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》
- matlab子函数调用变量,matlab中,怎么样用function自定义函数调用另一个函数名为输入?...
- 利用Python爬虫刷新某网站访问量
- 是时候该了解一波Protocol Buffers了[Java]
- javascript事件代理(Event Delegation)
- 区块链架构与应用(区块链入门篇)
- 2018上半年游戏行业DDoS态势报告
- 55道django面试题
- 转换小写金额为大写金额
- pillow图像格式转化和缩放操作
- 搭建简单的智能家居语音控制系统:树莓派+唤醒词+esp8266
- Impala 解决Invalid argument: Client connection negotiation failed异常
- Spark独到见解--Action算子总结
- 【正则】常用正则公式
- linux常用运维shell,常用的shell命令,持续更新 | linux运维小站–linux系统架构_服务器运维_Linux运维工程师工作手札...
- python 修改图片尺寸 留白_python等比压缩图片到固定大小,不足的留白
- 港中深、华为联合培养,韩晓光课题组招收三维视觉数字人方向博士生
- TensorFlow Lite 开发手册(5)——TensorFlow Lite模型使用实例(分类模型)
- 电子设计教程40:软启动电路-串联NTC热敏电阻
热门文章
- 基于labview的温湿度数据采集_基于Raspberry Pi(树莓派)的MCC数据采集卡应用
- 如何锁定计算机密码,如何设置电脑密码锁详细方法
- 数组旋转问题【有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数】
- zoj 1560 Hansel and Grethel(求两条直线的交点)
- 【小程序源码】趣味娱乐趣味制作,藏头诗,隐藏图
- Maven学习(十四)profile标签
- asp.net中iframe详细用法
- Clickhouse 物化视图 MATERIALIZED VIEW
- DIV六种实现元素水平居中
- vuedraggable的使用