Android第三方登陆之QQ篇(原生登陆授权)
2016-12-18 14:01
417 查看
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的登陆,没有需要太多的东西,所以我们只需要下载基础包既可以,最新的最下:
附:基础包、全量包对比:
下载完基础包后,解压后如下:
直接导入到studio libs中,添加as Library
配置AndroidManifest
在应用的AndroidManifest.xml增加配置的节点下增加以下配置(注:不配置将会导致无法调用API);
我们来看看腾讯qq的创建实例并回调文档:
那么我们照着开发文档走,就完全可以搞定了,具体代码如下,自己封装成了工具类:
LoginUiListener
不要忘记在相应的activity中的onActivityResult()方法中添加:
首先,我们得去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; } @Override public 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() { @Override public 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(); } @Override public void onError(UiError uiError) { } @Override public void onCancel() { } }); } @Override public void onError(UiError uiError) { } @Override public void onCancel() { }
不要忘记在相应的activity中的onActivityResult()方法中添加:
@Override protected 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第三方登陆 错误 登陆授权失败(错误码:110406)
- Android第三方登陆之新浪微博Weibo篇(原生登陆授权)
- Android第三方登陆之新浪微博Weibo篇(原生登陆授权)
- Android第三方登陆之微信Wechat、WeiXin篇(原生登陆授权)
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)
- ios 第三方qq登陆,号码禁止授权
- Android ShareSDK第三方微信QQ登陆
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)
- 微信授权登陆接入第三方App(步骤总结)Android
- Android QQ/微信第三方登陆 分享,支付宝微信支付
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)
- 微信授权登陆接入第三方App(步骤总结)Android
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)
- Android端 第三方qq登陆
- 第三方授权登陆(QQ)
- android QQ账号登陆第三方应用
- 微信授权登陆接入第三方App(步骤总结)Android
- 微信授权登陆接入第三方App(Android)
- 微信授权APP第三方登陆(Android)
- 腾讯开发平台QQ登陆授权(Android_SDK_V3.1.0使用小结)