QQ第三方授权登录(带详细源码)
为什么80%的码农都做不了架构师?>>>
建议下载demo,照着开发文档看
1.首先要配置SDK,官网下载的,两个jar。
2.配置AndroidManifest.xml 的权限和两个Activity
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.iwtle.www.englishstudy">
<!--用户需要的权限--><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- SDK2.1新增获取用户位置信息 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.GET_TASKS" /><applicationandroid:allowBackup="true"android:icon="@mipmap/studylogo"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".ui.LoginActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
<!--需要配置的两个Activity--><activityandroid: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" /><data android:scheme="Tencent101368807" /><!--这个APPid需要替换成自己的--></intent-filter></activity><activityandroid:name="com.tencent.connect.common.AssistActivity"android:configChanges="orientation|keyboardHidden"android:screenOrientation="behind"android:theme="@android:style/Theme.Translucent.NoTitleBar" /></application></manifest>
3.编写登录的代码。
3.1首先需要在onCreate初始化sdk
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTencent = Tencent.createInstance("101368807", this.getApplicationContext());}
3.2创建回调的函数。
IUiListener loginListener = new BaseUiListener() {@Overrideprotected void doComplete(JSONObject values) {Log.d("SDKQQAgentPref", "AuthorSwitch_SDK:" + SystemClock.elapsedRealtime());System.out.println("123456" + values.toString());}};private class BaseUiListener implements IUiListener {@Overridepublic void onComplete(Object response) {if (null == response) {return;}JSONObject jsonResponse = (JSONObject) response;if (null != jsonResponse && jsonResponse.length() == 0) {return;}doComplete((JSONObject) response);System.out.println("123456789" + response.toString());}protected void doComplete(JSONObject values) {}@Overridepublic void onError(UiError e) {System.out.println("12345678910" + e.errorDetail);}@Overridepublic void onCancel() {System.out.println("12345678910" + "onCancel");}}
3.3还需要一个回调的方法(如果要成功接收到回调)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {Log.d("12346", "-->onActivityResult " + requestCode + " resultCode=" + resultCode);if (requestCode == Constants.REQUEST_LOGIN ||requestCode == Constants.REQUEST_APPBAR) {Tencent.onActivityResultData(requestCode, resultCode, data, loginListener);}super.onActivityResult(requestCode, resultCode, data);}
3.4最后登录的代码
public void Login(View view) {System.out.println("我要登录了!!");if (!mTencent.isSessionValid()) {mTencent.login(this, "all", loginListener);}}
4.登录页面的整体源码
public class MainActivity extends AppCompatActivity {private Tencent mTencent;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTencent = Tencent.createInstance("101368807", this.getApplicationContext());}public void Login(View view) {System.out.println("我要登录了!!");if (!mTencent.isSessionValid()) {mTencent.login(this, "all", loginListener);}}protected void onActivityResult(int requestCode, int resultCode, Intent data) {Log.d("12346", "-->onActivityResult " + requestCode + " resultCode=" + resultCode);if (requestCode == Constants.REQUEST_LOGIN ||requestCode == Constants.REQUEST_APPBAR) {Tencent.onActivityResultData(requestCode, resultCode, data, loginListener);}super.onActivityResult(requestCode, resultCode, data);}IUiListener loginListener = new BaseUiListener() {@Overrideprotected void doComplete(JSONObject values) { //获取数据Log.d("SDKQQAgentPref", "AuthorSwitch_SDK:" + SystemClock.elapsedRealtime());System.out.println("123456" + values.toString());}};private class BaseUiListener implements IUiListener {@Overridepublic void onComplete(Object response) { //登录成功获取数据if (null == response) {return;}JSONObject jsonResponse = (JSONObject) response;if (null != jsonResponse && jsonResponse.length() == 0) {return;}doComplete((JSONObject) response);System.out.println("登录成功" + response.toString());Toast.makeText(MainActivity.this, "登录成功" + response.toString(), Toast.LENGTH_LONG).show();}protected void doComplete(JSONObject values) {}@Overridepublic void onError(UiError e) {//登录出错System.out.println("12345678910" + e.errorDetail);}@Overridepublic void onCancel() { //取消登录System.out.println("12345678910" + "onCancel");}}}
5.demo的网址。
链接:http://pan.baidu.com/s/1gfr6eDt 密码:2trk
我发现再好的教程,如果你只是搜到,而不去敲一遍。永远都不会去好好写的。
转载于:https://my.oschina.net/TAOH/blog/809448
QQ第三方授权登录(带详细源码)相关推荐
- QQ第三方授权登录+阿里云短信服务
一.简介 目前我们使用的web系统在登陆功能开发时,不仅仅只是单纯的使用表单填写用户注册信息来进行注册,参考我们现在使用的其他软件存在以下登录情况. 使用QQ/微信等第三方平台进行授权登录 使用短信验 ...
- (二)C# winform C/S WebBrowser qq第三方授权登录
紧接上一篇,qq的授权登录,跟微信相似,不同的地方是: 1 申请appid与appkey的时候,注意填写回调地址. 2 这里可以在WebBrowser的是Navigated事件中直接得到Access ...
- 自动化测试如何保持登录状态_自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码...
一.什么是PO模式 全称:page object model 简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BasePage ...
- 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9057257 由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字 ...
- 对第三方社会化 sdk 的集成和二次封装,比如第三方授权登录、第三方分享等
SocialSDKAndroid 项目地址:tsy12321/SocialSDKAndroid 简介:对第三方社会化 sdk 的集成和二次封装,比如第三方授权登录.第三方分享等 对第三方社会化 sdk ...
- 微信第三方授权登录并在h5中发起支付
概述:微信第三方授权登录,授权后转向h5页面直接发起支付,应用场景:智能售货机,用户扫码直接支付并记录用户信息. 一.业务配置项 1.1注册微信公众号,微信商户号 微信公众号需要认证,认证后才会有相关 ...
- 微信第三方授权登录之oauth开发
背景: 首先copy下别人讲解的oauth2.0验证授权的一些背景知识: 1) 传统的注册登陆方式: 如果你是一个新用户,则点击新用户注册按钮,进入由简书提供的注册页面,进行用户名密码验证和设置 然后 ...
- Springboot基于justAuth实现第三方授权登录
1. 简介 随着科技时代日渐繁荣,越来越多的应用融入我们的生活.不同的应用系统不同的用户密码,造成了极差的用户体验.要是能使用常见的应用账号实现全应用的认证登录,将会更加促进应用产品的推广,为生活增加 ...
- OAUTH之 钉钉第三方授权登录
文章目录 OAUTH之钉钉第三方授权登录 前期用到的工具 获取access_token 请求地址 请求方法 响应 扫码 / 使用账号密码 -- 获取 临时 code 参数重要说明 直接访问 扫码登录 ...
最新文章
- 年度数据与月度数据转化_山东工会新媒体传播力指数2020年12月数据、年度数据出炉...
- shell脚本编程规范与变量
- 总奖池31万!智能零售柜商品识别,“信也科技杯”算法大赛启动
- AJAX 带有 取消功能的 UpdateProgress
- 2017.10.10 杀人游戏 思考记录
- 九种设计模式在Spring中的应用
- 基于JAVA+SpringBoot+Mybatis+MYSQL的垃圾分类管理系统
- fltk在UbuntuLinux中搭建和测试-《C++程序设计原理与实践》Chapter12:显示模型 环境构建...
- 简单python脚本实例-超实用的 30 段 Python 案例
- css选择器总结(内附实例及截图)
- 联想拯救者y7学计算机可以用吗,2018什么笔记本电脑好 联想拯救者y7000评测
- 使用图算法实现地铁线路规划
- shell 获取当前时间
- 苹果开发者账号可以创建多少测试证书_配置2020苹果开发者账号证书的简要说明...
- logstash 导入数据,查看每秒导入的数据量及已导入数量和已导入时间
- Q1成绩:华为可穿戴设备增幅亮眼,Uber亏损10亿美元!
- 如何在微信h5拉起支付宝支付界面
- 转专业计算机常见的名词解释,迎鲜肉第9弹|大学生活必知名词解释
- linux下 firefox安装flash插件
- 基于JAVA电影院购票系统计算机毕业设计源码+系统+lw文档+部署