QQ登录

作者: 这个姑凉儿 | 来源:发表于2017-05-26 15:02 被阅读0次

    一.集成SDK

    1.集成官方Framework

    首先下载官网SDK iOS_SDK下载,目前来说最新的包是V3.1.0,下载完解压后你会看到

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

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

    然后将这两个文件拖入到工程中.

    二.配置工程

    1.添加SDK依赖的系统库文件

    此外还需要导入一些库分别是:

    "SystemConfiguration.framework"

    "Security.framework"

    "CoreTelephony.framework"

    "CoreGraphics.Framework"

    "libiconv.tbd"

    "libsqlite3.tbd"

    "libstdc++.tbd"

    "libz.tbd"

    TIPS:

    .dylib在XCode7以后变成.tbd了,如果你是Xcode7以下的版本,就是.dylib,不过库的名字一样

    在Xcode中打开工程配置文件,选择“general”一栏,在最下面找到"Linked Framewords and Libraries"选项点击下面添加按钮添加上面的库即可.

    2. 修改必要的工程配置属性。

    在工程配置中的“Build Settings”一栏中找到“Linking”配置区,给“Other Linker Flags”配置项添加属性值“-fobjc-arc”

    3.Info.Plist设置

    在工程配置中的"Info"中找到"URL Types",添加一条新的“URL scheme”.

    注意:    Identifier: tencentopenapi

                URL Schemes: tencent + appid

    其中Identifier 和URL Schemes是必填项,Identifier是tencentopenapi,URL Schemes是tencent加上你在官网申请的appid.

    你以为到了这步就完了吗,NO NO NO 要想实现点击之后跳转到QQ是应用间跳转的效果而不是打开一个登录网页的话我们还得再Info.plist表中添加一下链接.

    找到工程的Info.plist,然后添加"LSApplicationQueriesSchemes"

    三.业务集成1. AppDelegate到了这里,我们的工程配置算是完成了.接下来在AppDelegate中 #import并且重写AppDelegate 的handleOpenURL和openURL方法

    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.初始化iOS SDK API数据对象TencentOAuth

    (1) 创建TencentOAuth并初始化其appid,demo为123456789。delegate为实现TencentSessionDelegate的对象:

    _tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"123456789", andDelegate:self];

    这里delegate不能为空

    (2)设置应用需要用户授权的API列表。 (建议如果授权过多的话,可能会造成用户不愿意授权。这里最好只授权应用需要用户赋予的授权。):

    NSArray *permissions = [NSArray arrayWithObjects:kOPEN_PERMISSION_GET_INFO, kOPEN_PERMISSION_GET_USER_INFO, kOPEN_PERMISSION_GET_SIMPLE_USER_INFO, nil];

    // 这里调起登录

    [_tencentOAuth authorize:permissions];

    注意: 这个地方官网是下面的写法

    _permissions = [NSArray arrayWithObjects:@"get_user_info",@"get_simple_userinfo", @"add_t", nil];

    遵守代理

    需要遵守TencentSessionDelegate协议,并在代码中实现协议中的方法,具体方法很多,这里就不一一列举了,具体协议可以参照TencentOpenAPI.framework /Headers中的TencentOAuth.h文件

    调用SDK登录

    1.调用登录的方法很简单

    [_tencentOAuth authorize:permissions];

    2.登录完成之后,会调用TencentSessionDelegate中关于登录的协议方法

    //登录成功:

    - (void)tencentDidLogin

    {

    if (_tencentOAuth.accessToken.length > 0) {

    // 获取用户信息

    [_tencentOAuth getUserInfo];

    } else {

    NSLog(@"登录不成功 没有获取accesstoken");

    }

    }

    //非网络错误导致登录失败:

    - (void)tencentDidNotLogin:(BOOL)cancelled {

    if (cancelled) {

    NSLog(@"用户取消登录");

    } else {

    NSLog(@"登录失败");

    }

    }

    3.获取用户信息

    实现- (void)getUserInfoResponse:(APIResponse*) response;方法,从response获取用户的个人信息

    // 获取用户信息

    - (void)getUserInfoResponse:(APIResponse *)response {

    if (response && response.retCode == URLREQUEST_SUCCEED) {

    NSDictionary *userInfo = [response jsonResponse];

    NSString *nickName = userInfo[@"nickname"];

    // 后续操作...

    } else {

    NSLog(@"QQ auth fail ,getUserInfoResponse:%d", response.detailRetCode);

    }

    }

    至此集成QQ第三方登录就介绍完毕了。

    相关文章

      网友评论

          本文标题:QQ登录

          本文链接:https://www.haomeiwen.com/subject/zjhxfxtx.html