第三方登录之qq登录(转载)
我们经常会见到应用登陆的时候会有QQ,微信,微博等的第三方登陆
如图:
下面我们主要讲一下qq的第三方登陆如何实现
首先,到官网注册:
一,下载SDK
下载SDK 地址:
下载最新版本的iOS_SDK_V2.9
二,SDK的目录结构
下载的文件结构如下
---------------------------------------------------------------------------------------------------------------------
sample:示例代码
1. TencentOpenAPI.framework打包了iOS SDK的头文件定义和具体实现。
2. TencentOpenApi_iOS_Bundle.bundle 打包了iOS SDK需要的资源文件。
三,在Xcode中创建项目
新建空白项目,起名TestQQLogin
四,将iOS SDK添加到项目中
1. 将iOS SDK中的TencentOpenAPI.framework和TencentOpenApi_IOS_Bundle.bundle文件拖放到应用开发的目录下。
2,在弹出的框中选择如下
五,添加依赖库
点击Project navigator 点击TARGETS ---> General ---> Linked Frameworks and Libraries
点击加号添加
添加SDK依赖的系统库文件。分别是
”Security.framework”,
“libiconv.dylib”,
“SystemConfiguration.framework”,
“CoreGraphics.Framework”、
“libsqlite3.dylib”、
“CoreTelephony.framework”、
“libstdc++.dylib”、
“libz.dylib”。
六, 修改必要的工程配置属性
1,在工程配置中的“Build Settings”一栏中找到“Linking”配置区,给“Other Linker Flags”配置项添加属性值“-fobjc-arc”
效果如下图:
2,在XCode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type”添加一条新的“URL scheme”,新的scheme = tencent + appid(例如你的appid是123456 则填入tencent123456) identifier 填写:tencentopenapi。appid怎么来请看第七步。
七,在腾讯应用宝创建应用
第六步配置中需要的appid等信息 需要首先在应用宝中创建应用才能得到。
首先登陆网站:http://open.qq.com
创建应用,在应用详情中可以看到appid
申请完成后一定记得添加测试qq,否则没有审核通过的应用是无法直接登陆的
八,开始写代码
1,打开刚才新建的工程,重写appdelegate的两个方法
重写之前导入头文件
#import <TencentOpenAPI/TencentOAuth.h>
openURL:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
return [TencentOAuth HandleOpenURL:url];
}
handleOpenURL:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
return [TencentOAuth HandleOpenURL:url];
}
2 , 在需要使用的 viewController中 初始化tencentOAuth=[[TencentOAuthalloc]initWithAppId:@"你的appid"andDelegate:self];
3,设置权限列表
//4,设置需要的权限列表,此处尽量使用什么取什么。
permissions= [NSArrayarrayWithObjects:@"get_user_info",@"get_simple_userinfo",@"add_t",nil];
4,登陆
[tencentOAuth authorize:permissionsinSafari:NO];
5,在代码中实现 TencentSessionDelegate 方法
#pragma mark -- TencentSessionDelegate
//登陆完成调用
- (void)tencentDidLogin
{
resultLable.text =@"登录完成";
if (tencentOAuth.accessToken &&0 != [tencentOAuth.accessTokenlength])
{
// 记录登录用户的OpenID、Token以及过期时间
tokenLable.text =tencentOAuth.accessToken;
}
else
{
tokenLable.text =@"登录不成功没有获取accesstoken";
}
}
//非网络错误导致登录失败:
-(void)tencentDidNotLogin:(BOOL)cancelled
{
NSLog(@"tencentDidNotLogin");
if (cancelled)
{
resultLable.text =@"用户取消登录";
}else{
resultLable.text =@"登录失败";
}
}
// 网络错误导致登录失败:-(void)tencentDidNotNetWork
{
NSLog(@"tencentDidNotNetWork");
resultLable.text =@"无网络连接,请设置网络";
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
以上方法基本上就实现了登陆,下来我们得考虑登陆成功之后如何获取用户信息
其实方法很简单我们在登陆成功的方法里面调用
[tencentOAuth getUserInfo];
然后系统会调用一个方法(我们需要提前实现)
-(void)getUserInfoResponse:(APIResponse *)response
{
NSLog(@"respons:%@",response.jsonResponse);
}
在getUserInfoResponse中就可以看到所需要的用用户信息
大致代码如下
- <pre name="code" class="objc">#import "ViewController.h"
- #import <TencentOpenAPI/TencentOAuth.h>
- @interface ViewController ()<TencentSessionDelegate>
- {
- UIButton *qqLoginBtn;
- TencentOAuth *tencentOAuth;
- NSArray *permissions;
- UILabel *resultLable;
- UILabel *tokenLable;
- }
- @end
- @implementation ViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- //1,初始化登陆按钮 添加到当前view中
- qqLoginBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
- qqLoginBtn.frame=CGRectMake(100, 50, 36, 36);
- [qqLoginBtn setTitle:@"登陆" forState:UIControlStateNormal];
- [qqLoginBtn addTarget:self action:@selector(loginAct) forControlEvents:UIControlEventTouchDown];
- [self.view addSubview:qqLoginBtn];
- //2,初始 lable
- resultLable=[[UILabel alloc]initWithFrame:CGRectMake(30, 100, 200, 36)];
- tokenLable=[[UILabel alloc]initWithFrame:CGRectMake(30, 150, 200, 36)];
- [self.view addSubview:resultLable];
- [self.view addSubview:tokenLable];
- //3,初始化TencentOAuth 对象 appid来自应用宝创建的应用, deletegate设置为self 一定记得实现代理方法
- //这里的appid填写应用宝得到的id 记得修改 “TARGETS”一栏,在“info”标签栏的“URL type”添加 的“URL scheme”,新的scheme。有问题家QQ群414319235提问
- tencentOAuth=[[TencentOAuth alloc]initWithAppId:@"1104617535" andDelegate:self];
- //4,设置需要的权限列表,此处尽量使用什么取什么。
- permissions= [NSArray arrayWithObjects:@"get_user_info", @"get_simple_userinfo", @"add_t", nil nil];
- }
- #pragma mark -- login
- -(void)loginAct
- {
- NSLog(@"loginAct");
- [tencentOAuth authorize:permissions inSafari:NO];
- }
- #pragma mark -- TencentSessionDelegate
- //登陆完成调用
- - (void)tencentDidLogin
- {
- resultLable.text = @"登录完成";
- if (tencentOAuth.accessToken && 0 != [tencentOAuth.accessToken length])
- {
- // 记录登录用户的OpenID、Token以及过期时间
- tokenLable.text = tencentOAuth.accessToken;
- [tencentOAuth getUserInfo];
- }
- else
- {
- tokenLable.text = @"登录不成功 没有获取accesstoken";
- }
- }
- //非网络错误导致登录失败:
- -(void)tencentDidNotLogin:(BOOL)cancelled
- {
- NSLog(@"tencentDidNotLogin");
- if (cancelled)
- {
- resultLable.text = @"用户取消登录";
- }else{
- resultLable.text = @"登录失败";
- }
- }
- // 网络错误导致登录失败:
- -(void)tencentDidNotNetWork
- {
- NSLog(@"tencentDidNotNetWork");
- resultLable.text = @"无网络连接,请设置网络";
- }
- - (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- // Dispose of any resources that can be recreated.
- }
- -(void)getUserInfoResponse:(APIResponse *)response
- {
- NSLog(@"respons:%@",response.jsonResponse);
- }
- @end
九,真机测试效果
打开登陆界面:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
登陆中
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
登录成功
第三方登录之qq登录(转载)的更多相关文章
- 网站如何接入第三方登录,微信登录和QQ登录:注册认证篇
第三方登录平台接入 (QQ\微信登录) QQ登录接入 第一步成为QQ应用开发者,审核期限七天 一.所需材料 1.公司注册相关信息 2.营业执照扫描件 微信登录接入 第一步成为微信开发平台开发者,认证费 ...
- Android之第三方平台实现QQ登录和QQ分享
目前大多数APP都包含了第三方平台的登录,特别是QQ和微信,这篇博客主要讲的是如何实现QQ第三方平台实现QQ登录和分享功能,功能包含: 登录授权登录获取用户信息(昵称,头像,地址等) QQ分享给好友 ...
- dedecms织梦第三方登录插件-QQ登录、微博登录、微信登录
织梦程序集成第三方QQ登录.微博登录.微信登录,获取QQ.微博.微信,并存储至数据库,一键注册为网站会员,不用再次填写绑定信息,方便粘贴用户更强. 织梦第三方登录效果 第三方登录插件特点 1.所有文件 ...
- 基于Vue、Springboot网站实现第三方登录之QQ登录,以及邮件发送
基于Vue.Springboot实现第三方登录之QQ登录 前言 一.前提(准备) 二.QQ登录实现 1.前端 2.后端 1.application.yml 和工具类QQHttpClient 2.QQL ...
- 从零玩转第三方登录之QQ登录
从零玩转第三方登录之QQ登录 前言 在真正开始对接之前,我们先来聊一聊后台的方案设计.既然是对接第三方登录,那就免不了如何将用户信息保存.首先需要明确一点的是,用户在第三方登录成功之后, 我们能拿到的 ...
- 第三方登录:QQ登录实现(OAuth2.0)
一.创建应用 1.在 QQ互联 创建应用 地址:https://connect.qq.com/manage.html#/ 然后进行实名认证,创建应用,审核通过 然后点击查看,可以获得 APP ID 和 ...
- android实现第三方登录之QQ登录
首先,当然是在腾讯开放平台(http://open.qq.com/)注册成为开发者,然后获取APP ID 1.下载SDK http://wiki.open.qq.com/wiki/mobile/SDK ...
- 第三方登录(QQ登录)开发流程详解
原文:http://www.cnblogs.com/it-cen/p/4338202.html 近排由于工作的繁忙,已经一个星期没写博文做分享了,接下来我对网站接入第三方登录----QQ登录的实现逻辑 ...
- (转)第三方登录(QQ登录)开发流程详解
近排由于工作的繁忙,已经一个星期没写博文做分享了,接下来我对网站接入第三方登录----QQ登录的实现逻辑做一个详细的讲解. 对于整个流程的详细文档可以到QQ互联官网(http://wiki.conne ...
- Spring Security构建Rest服务-0102-Spring Social开发第三方登录之qq登录
图一 基于SpringSocial实现qq登录,要走一个OAuth流程,拿到服务提供商qq返回的用户信息. 由上篇介绍的可知,用户信息被封装在了Connection里,所以最终要拿到Connectio ...
随机推荐
- js填写银行卡号,每隔4位数字加一个空格
1.原生js写法 !function () { document.getElementById('bankCard').onkeyup = function (event) { var v = thi ...
- javascript --- 再谈词法分析
javascript代码是如何执行的呢,分为六个步骤(就像把大象装进冰箱总共分几步?): 第一步:载入第一个js代码段(注:script标签对内的代码或是引用js代码,这也说明js并不是一行一行(单纯 ...
- javascript中的defer是什么?
今天看到stackoverflow上的这样一个问题(问题链接),大概是说用jQuery获取不到元素,这是我们刚开始接触javascript常常会碰到的问题,回答者列举了4中方法去解决获取不到元素的问题 ...
- java随机生成指定的位数
/** * 获取count个随机数 * @param count 随机数个数 * @return */ public static String game(int count){ StringBuff ...
- android 保存 用户名和密码 设置等应用信息优化
1.传统的保存用户名,密码方式 SharedPreferences Editor editor = shareReference.edit(); editor.putString(KEY_NAME,& ...
- 【转】handler.removeCallbacks失效问题
package com.example.demoactivity; import android.app.Activity; import android.os.Bundle; import andr ...
- block中出现此种报错: Incompatible block pointer types initializing 'float (^__strong)(float, float)' with an expression of type 'int (^)(float, float)'
当block(代码块)的返回值是float时,应注意的地方:定义的返回值类型一定要与return的返回值类型一样 我们以两个数的四则运算来举例 在main.m文件中的四则运算中,我采用两种返回值类型( ...
- 找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher
配置PATH的时候,把$PATH写在后面,比如下面这样 export PATH=$MAVEN_HOME/bin:$PATH
- Enterprise Library +Caliburn.Micro+WPF CM框架下使用企业库验证,验证某一个属性,整个页面的文本框都变红的原因
我用的是CM这个框架做的WPF,在用企业库的验证的时候,我用标签的方式给一个属性加了不能为空的验证,但整个页面的所有控件的外面框都变红了.原因是CM框架的绑定方式是直接X:Name="你的属 ...
- IOS之--UI进阶--多控制器管理第一天
01-项目中常见的文件(LaunchScreen) Xcode5 框架是苹果事先已经导入进去的.在项目的结构当中就能够看到导入的框架. Xcode6 会自动导入一些觉见的框架.在项目结构当中,看不到已 ...