iOS QQ第三方登实现
iOS QQ第三方登实现
版权声明:本文为博主原创文章,未经博主允许不得转载。
我们经常会见到应用登陆的时候会有QQ,微信,微博等的第三方登陆
如图:
下面我们主要讲一下qq的第三方登陆如何实现
首先,到官网注册:
http://wiki.connect.qq.com
一,下载SDK
下载SDK 地址:
http://wiki.open.qq.com/wiki/mobile/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中就可以看到所需要的用用户信息
大致代码如下
[objc] view plaincopy[objc] view plaincopy
- <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
九,真机测试效果
打开登陆界面:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
登陆中
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
登录成功
iOS QQ第三方登实现相关推荐
- IOS QQ第三方登陆提交AppleStore 被拒解决
IOS QQ第三方登陆提交AppleStore 被拒解决的原因,大多是苹果的审核人员手机里没有安装QQ,又没有跳到网页登陆,导致审核不通过. 解决办法: 找腾讯开放平台的客服开通申请应用的webvie ...
- 一步一步实现iOS QQ第三方登录
前言 最近在公司应用中集成QQ登录的时候遇到一些波折(坑点),觉得还是有必要记录一下. 一.集成SDK 1.集成官方Framework 首先下载官网SDK iOS_SDK下载,目前来说最新的包是V3. ...
- iOS QQ第三方登录
今天做了QQ第三方登录,由于公司需要,没用集成的ShareSDK或友盟,走了些弯路,说一下我遇到的问题,以及解决的方式 1. pod 导入QQ的SDK pod 'TencentOpenApiSDK', ...
- iOS QQ第三方登录的简单实现
平时我们经常会在一些app的登录界面中见到第三方登录,一些应用中一般会使用一些类似shareSDK的集成平台,他们是将QQ.微信.微博等第三方进行了二次封装,灵活性不太高,其实直接集成也是比较容易的. ...
- iOS微信第三方登录实现
iOS微信第三方登录实现 字数2824 阅读7603 评论19 喜欢46 注意:代码自己动手写,不要复制! 一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标准构建的微信O ...
- [Android]-SDK QQ微信登入
在Unity中接入大量SDK,对一个零Android开发基础的人来说还是比较蛋疼的.在网上搜了一大堆资料,总算折腾出一个能用的QQ&微信登入SDK. 在QQ互联和微信开放平台注册,并申请相关权 ...
- android qq三方登录授权失败,QQ第三方登陆授权失败110401原因及解决办法分享
qq第三方登陆授权失败出现代码110401是什么情况?遇到这种情况该如何解决?相信很多用户们在操作的时候都出现过类似的情况吧?下面是小编带来的攻略解析,一起来关注下! qq第三方登陆授权失败11040 ...
- QQ第三方登录报错error=-1
qq 第三方登录报错error=-1 再次实例化qc类.
- CocoaPods管理iOS的第三方类库
2019独角兽企业重金招聘Python工程师标准>>> 使用CocoaPods管理iOS的第三方类库 OCT 15TH, 2012 iOS第三方类库的管理是一个很麻烦的事,项目信赖的 ...
最新文章
- 为基于树的机器学习模型构建更好的建模数据集的10个小技巧!
- javaScript一些函数--Math()
- 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - A. 奖券数目
- JavaScript 变量的作用域和生命周期
- 18计算机汽修英语期末试卷,英语语法期末考试试卷(a)
- 解决人工智能PCA算法输出不稳定的方案
- python爬虫的具体流程_[专栏作家]【Python】爬虫程序 (一)
- html flash轮播图,flash滚动图片制作 图片列表左右滚动轮播
- EASE-Grid投影
- 408考研计算机网络视频,计算机408考研视频哪个好
- 欧姆龙PLC HostLink协议整理
- 电子科大+矩阵理论+总复习知识点总结
- 嵌入式的c语言,嵌入式c语言
- 46相关度评分TFIDF算法
- 生命是一种长期而持续的累积过程
- 漫谈 | 从52个思考题来看《Linux内核设计的艺术》
- 字符串连接的5种方法
- 运动控制卡的函数库与Linux,运动控制卡应用开发教程之使用Qt
- 服务器生成js文件,Next.js 静态生成和服务器端渲染
- 【容斥】[ZJOI2016] 小星星
热门文章
- java饭堂管理代码论文_[计算机设计精品] 基于java的餐饮管理系统(毕业论文).doc...
- glibc 知:手册32:系统配置
- 锁相环相位噪声模型及其计算
- PyQt5学习(7):打印Qprinter
- vector使用方法
- php esc p 打印,ESC/P 打印指令使用,3种票据打印方法(转)
- 修复Windows下有线无线网络掉线问题的解决方案
- RKE安装k8s及部署高可用rancher
- 计算机一级自动筛选怎么做,Excel自动筛选小技巧
- 企业邮箱账号注册格式怎么写?