平时我们经常会在一些app的登录界面中见到第三方登录,一些应用中一般会使用一些类似shareSDK的集成平台,他们是将QQ、微信、微博等第三方进行了二次封装,灵活性不太高,其实直接集成也是比较容易的。今天就来简单的说一下QQ的第三方登录的集成。

一、注册开发者账号

腾讯开放平台 http://open.qq.com/

二、下载所需SDK

SDK下载地址:http://wiki.open.qq.com/wiki/mobile/SDK下载

三、SDK的目录结构

sample:示例代码

1. TencentOpenAPI.framework打包了iOS SDK的头文件定义和具体实现。

2. TencentOpenApi_iOS_Bundle.bundle 打包了iOS SDK需要的资源文件。

四、创建项目导入SDK添加依赖库

将TencentOpenAPI.framework和TencentOpenApi_iOS_Bundle.bundle拖入工程,注意勾选copy items if needed

点击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。

注意:此处的配置是实现应用间的跳转即跳转至QQ进行授权以及跳转回app进行其他的操作。

六、创建应用

在腾讯开发者平台中创建应用,获得appId及appKey,具体步骤详见开发中心,这里不再赘述。

七、开始添加代码

做好了之前的步骤,现在开始添加调用授权的代码。

AppDelegate.m:

#import "AppDelegate.h"
#import <TencentOpenAPI/TencentOAuth.h> //导入头文件@interface AppDelegate () <TencentSessionDelegate>
{TencentOAuth *_tencentOAth;//创建授权对象
}
@end@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// Override point for customization after application launch._tencentOAth = [[TencentOAuth alloc] initWithAppId:@"这里填写你申请的appID" andDelegate:self];return YES;
}//重写appDelegate中的回调方法
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {return [TencentOAuth HandleOpenURL:url];
}- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {return [TencentOAuth HandleOpenURL:url];
}

你所要调用第三方登录的controller

#import "ViewController.h"
#import <TencentOpenAPI/TencentOAuth.h>@interface ViewController () <TencentSessionDelegate>
{TencentOAuth *_tencentOAth;
}
@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.
}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}- (IBAction)qqLogin:(id)sender
{_tencentOAth = [[TencentOAuth alloc] initWithAppId:@"你所申请的appID" andDelegate:self];//设置需要获取的权限列表,需要什么就写什么NSArray *permissions = [NSArray arrayWithObjects:@"get_user_info",@"get_simple_userinfo",@"add_t",nil];//调用此方法开始跳转进行授权[_tencentOAth authorize:permissions inSafari:NO];
}#pragma mark -- TencentSessionDelegate//登陆完成调用- (void)tencentDidLogin{if (_tencentOAth.accessToken &&0 != [_tencentOAth.accessToken length]){//这里可获取accessToken,Access Token凭证,用于后续访问各开放接口NSLog(@"accessToken %@",_tencentOAth.accessToken);//这里可获取openID,openId是用户授权登录后对该用户的唯一标识NSLog(@"openId %@",_tencentOAth.openId);//获取用户信息[_tencentOAth getUserInfo];}else{NSLog(@"登录不成功没有获取accesstoken");}}//非网络错误导致登录失败:
-(void)tencentDidNotLogin:(BOOL)cancelled{NSLog(@"tencentDidNotLogin");if (cancelled){NSLog(@"用户取消登录");}else{NSLog(@"登录失败");}}// 网络错误导致登录失败:
- (void)tencentDidNotNetWork{NSLog(@"tencentDidNotNetWork");
}- (void)getUserInfoResponse:(APIResponse *)response{NSLog(@"respons:%@",response.jsonResponse);NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:response.jsonResponse[@"figureurl_2"]]];UIImage *image = [UIImage imageWithData:imageData scale:1];self.headerImageView.image = image;self.nameLabel.text = response.jsonResponse[@"nickname"];self.sexLabel.text = response.jsonResponse[@"gender"];self.provinceLabel.text = response.jsonResponse[@"province"];self.cityLabel.text = response.jsonResponse[@"city"];
}@end

具体步骤再来叙述一下:

1、初始化TencentOAuth 对象 appid来自应用宝创建的应用, deletegate设置为self 记得要实现代理方法

2、设置需要获取的权限列表,需要什么就写什么

3、调用方法开始跳转进行授权 [_tencentOAth authorize:permissions inSafari:NO];

4、在tencentDidLogin代理中获取openId、acess_token

5、调用[_tencentOAth getUserInfo] 获取用户的信息

6、在 - (void)getUserInfoResponse:(APIResponse *)response 代理中获取用户的信息。

至此,QQ的授权登录就算是基本的实现了,至于具体的其他注册逻辑就需要自己进行改写了。

iOS QQ第三方登录的简单实现相关推荐

  1. 一步一步实现iOS QQ第三方登录

    前言 最近在公司应用中集成QQ登录的时候遇到一些波折(坑点),觉得还是有必要记录一下. 一.集成SDK 1.集成官方Framework 首先下载官网SDK iOS_SDK下载,目前来说最新的包是V3. ...

  2. iOS QQ第三方登录

    今天做了QQ第三方登录,由于公司需要,没用集成的ShareSDK或友盟,走了些弯路,说一下我遇到的问题,以及解决的方式 1. pod 导入QQ的SDK pod 'TencentOpenApiSDK', ...

  3. iOS 微博第三方登录的简单实现

    一.下载微博SDK 微博SDK的官方github : https://github.com/sinaweibosdk/weibo_ios_sdk 下载所需要的SDK 二.集成SDK 下载后的SDK文件 ...

  4. iOS QQ第三方登实现

    iOS QQ第三方登实现 标签: iOSqqsdk第三方登陆 2015-06-09 13:40 26692人阅读 评论(7) 收藏 举报  分类: iOS(120)  版权声明:本文为博主原创文章,未 ...

  5. iOS微信第三方登录实现

    iOS微信第三方登录实现 字数2824 阅读7603 评论19 喜欢46 注意:代码自己动手写,不要复制! 一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标准构建的微信O ...

  6. web接入QQ第三方登录

    原文地址:https://blog.csdn.net/cwfjimogudan/article/details/54135957 这是第三方登录的第二篇,关于web接入微博第三方登录可以参考我之前的博 ...

  7. JavaWeb实现QQ第三方登录

    在开发过程中需要使用QQ第三方登录,但发现网上的资料都有点不同,很多还有些误导,这里就详细说下具体的实现吧! 1.在QQ互联上申请成为开发者 网址:https://connect.qq.com/ind ...

  8. maven的web工程QQ第三方登录HTML、

    声明.使用JDK9.idea2018.02 .maven3.5.4.tomcat9  maven的web工程QQ第三方登录接口引入,听起来简单,做完以后也很简单,这里使用 java SDK : 写的文 ...

  9. QQ第三方登录报错error=-1

    qq 第三方登录报错error=-1 再次实例化qc类.

最新文章

  1. 一行代码集成带负数的自定义键盘
  2. php正则的练习(持续跟新)
  3. python语言程序设计2019版第二章课后答案-python语言程序设计基础(嵩天)第二章课后习题...
  4. Java设计模式12:装饰器模式
  5. 软件架构设计的三个维度,软件架构师需要知道的点,了解一下吧!
  6. CAN总线技术 | 数据链路层03 - CAN总线竞争与仲裁机制
  7. 开源硬件 专利_标准和开源:为什么专利待遇不同?
  8. IntelliJ IDEA lombok插件的安装和使用听
  9. Window.ShowModalDialog使用手册
  10. pythonturtle绘图代码 四叶草_python绘图四叶草
  11. CentOS6.9 minimal版本安装图形化界面
  12. java加密与解密(一)
  13. vs2010中外联qt,使用qt编程
  14. 快速比对源代码的工具_推荐7个代码对比工具
  15. 基于CPU+GPU的H.264编码器并行编码设计
  16. Thematic Contests -codeforce
  17. js隐藏显示div页面方法
  18. android串口通信——android-serialport-api
  19. Docker各操作系统安装方式及优缺点
  20. 思科交换机配置单播MAC地址过滤

热门文章

  1. 华为18级工程师三年心血终成趣谈网络协议文档(附讲解)
  2. Android在线生成证书并打包成apk文件
  3. 【MACCMS】UA判断 展示判断
  4. asp中的Rnd 函数
  5. Android 设置字体加粗,斜体,中划线(删除线)下划线,上标,下标,文字表情等
  6. TCP-508N使用python modbus_tk库控制总结
  7. 随机信号、严平稳、宽平稳和遍历性随机信号的通俗讲解
  8. 2345全家桶,教会9亿用户如何重装系统
  9. EMMC TLC MLC 的区别
  10. 全球与中国孕妇维生素和补充剂市场深度研究分析报告