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,初始化

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.

}

大致代码如下

#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  一定记得实现代理方法
    tencentOAuth=[[TencentOAuth alloc]initWithAppId:@"你的appid" andDelegate:self];

    //4,设置需要的权限列表,此处尽量使用什么取什么。
    permissions= [NSArray arrayWithObjects:@"get_user_info", @"get_simple_userinfo", @"add_t", 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;
    }
    else
    {
        tokenLable.text = @"登录不成功 没有获取accesstoken";
    }
}

//非网络错误导致登录失败:
-(void)tencentDidNotLogin:(BOOL)cancelled
{
    NSLog(@"tencentDidNotLogin");
    if (cancelled)
    {
        resultLable.text = @"用户取消登录";
    }else{
        resultLable.text = @"登录失败";
    }
}?// 网络错误导致登录失败:
-(void)tencentDidNotNetWork
{
    NSLog(@"tencentDidNotNetWork");
    resultLable.text = @"无网络连接,请设置网络";
}

九,真机测试效果

示例代码上传到qq群 414319235  大家需要可以去下载

时间: 2024-10-08 12:12:48

iOS QQ第三方登实现的相关文章

iOS QQ第三方登录

http://www.jianshu.com/p/ab3c1b177841 http://blog.csdn.net/zhonggaorong/article/details/51699623 http://blog.csdn.net/jackren_developer/article/details/52065587

无处不在,详解iOS集成第三方登录(SSO授权登录&lt;无需密码&gt;)

1.前言 不多说,第三登录无处不在!必备技能,今天以新浪微博为例. 这是上次写的iOS第三方社交分享:http://www.cnblogs.com/qingche/p/3727559.html 可以和今天的一起集成使用. 2.集成前的准备工作 2.1.去ShareSDK(现为Mob)注册帐号,下载SDK,然后添加自己的应用后得到AppKey 下载地址:http://sharesdk.cn/Download 2.2.申请第三方登录的Appkey 例如: 新浪微博.腾讯微博.QQ.微信.豆瓣应用.人

QQ第三方登录

QQ第三方登录 在Android应用程序的开发过程中,很多时候需要加入用户登录/注册模块.除了自己动手设计登录界面并实现相应功能外,现在还可以借助百度.腾讯等开发者平台提供的第三方账号登录模块.最近研究了友盟的社会化分享组件,对其提供的SDK中第三方登录的QQ模块进行了测试.本篇文章先对友盟用户注册.SDK下载及案例的下载做一个简单的介绍,然后针对测试程序的过程及代码进行详细的描述. 顺便提一点,进入友盟的主页及SDK下载页面之后,会发现其支持Android.IOS等多个环境下的应用程序开发,感

asp.net后台集成QQ第三方接口含发送微博、带图片微博(有源码)

最近在做项目的时候用到了QQ第三方接口,腾讯提供了JS.安卓.IOS.php的SDK,但是没有C#的SDK.一开始我是在前台直接用JS的SDK做登陆验证,但是做完自己就感觉这样很可笑,JS是暴露给客户端的,那么客户完全可以直接绕过去,进入到你的后台. 所以我在通过登陆验证后回调后台页面,在后台进行合法性验证,防止非法登陆. 原理就是后台通过httpwebrequest操作第三方接口 /// <summary> /// HTTP POST方式请求数据 /// </summary> /

Asp.Net Identity学习笔记+MVC5默认项目解析_第三方登入&授权总结

Identity学习笔记 Asp.Net Identity学习笔记+MVC5默认项目解析_基础用法 Asp.Net Identity学习笔记+MVC5默认项目解析_授权&Claim Asp.Net Identity学习笔记+MVC5默认项目解析_第三方登入&授权总结 Identity学习笔记第三方登入配置登入案例登入技术总结本地,已登入本地,未登入第三方登入 第三方登入 本文介绍Identity的第三方登入技术.到目前为止只介绍了CookieAuthentication这种授权方式,即浏览

PHP实现QQ第三方登录

学习之前,请大家先看一下oAuth协议. 首先呢,我们进入QQ互联的官方网站 http://connect.qq.com登入我们自己的QQ号,没有QQ号的小伙伴可以忽略本篇博文分享! 如上图所示,点击管理中心,会看到下面有一个创建应用的按钮 点击创建应用,弹出一个应用框框 我们点击网站创建网站应用,会再次弹出一个填写框 上述图片中的网站地址必须是线上域名,就是网上可以访问到的,我们可以去新浪的sae平台去申请一个,网址为http://www.sinacloud.com/doc/sae/php/s

iOS- 无处不在,详解iOS集成第三方登录(SSO授权登录&lt;无需密码&gt;)

1.前言 不多说,第三登录无处不在!必备技能,今天以新浪微博为例. 这是上次写的iOS第三方社交分享:http://www.cnblogs.com/qingche/p/3727559.html 可以和今天的一起集成使用. 2.集成前的准备工作 2.1.去ShareSDK(现为Mob)注册帐号,下载SDK,然后添加自己的应用后得到AppKey 下载地址:http://sharesdk.cn/Download 2.2.申请第三方登录的Appkey 例如: 新浪微博.腾讯微博.QQ.微信.豆瓣应用.人

[iOS]数据库第三方框架FMDB详细讲解

[iOS]数据库第三方框架FMDB详细讲解 初识FMDB iOS中原生的SQLite API在进行数据存储的时候,需要使用C语言中的函数,操作比较麻烦.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等. FMDB是一款简洁.易用的封装库.因此,在这里推荐使用第三方框架FMDB,它是对libsqlite3框架的封装,用起来的步骤与SQLite使用类似,并且它对于多线程的并发操作进行了处理,所以

QQ第三方登陆

第一步 引入第三方登陆类,实例化,调用类中方法getInstance()跳转到授权页面 第二步 登陆成功的回调方法,qq_return则是登陆成功会获取到的数据的处理方法 qq_return方法: 本文只是简单的分享一下QQ第三方登陆的步骤和方法,用的是TP3.2框架.