基于第三方QQ授权登录

如何接入移动应用?

通过简单的四个步骤 (开发者注册 -> 创建移动应用 -> 完善应用信息 ->应用分发),即可加入腾讯开放平台创建移动应用,并将您的应用上线发布到腾讯的移动平台上,轻松通过在应用宝、腾讯QQ、微信、腾讯手机管家、QQ空间、QQ游戏等场景分发聚合的腾讯移动开放平台获取丰厚的收益和巨大的流量。

第一步:开发者注册

1.请点击腾讯开放平台(http://open.qq.com)页面右上角的“登录”按钮,使用QQ帐号登录。如下图所示:

2. 登录成功后会跳转到注册页面,在注册页面需要提交公司或个人的基本资料。下图所示的是公司注册页面:

3.基本资料提交后,开发者需要进行邮箱验证。如下图所示:


4.验证完成后,开发者可以去创建应用,也可以继续完善资料(资料要完善到75%才能创建应用)。如下图所示:


5.开发者资料完善/维护



第二步:下载SDK

1.在首页点击移动应用

2.点击资料库

3.点击移动接入

4.点击API文档 -> SDK下载

5.下载iOS_SDK (下载arm64)就可以了

6.下载完iOS_SDK里面含有:其中1. TencentOpenAPI.framework打包了iOS SDK的头文件定义和具体实现。

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


第三步:创建应用

1.点击管理中心

2.创建移动应用

3.点击创建移动应用


第四步:iOS SDK环境搭建(创建完应用后你会得到APPID和APPKEY)

1.将iOS SDK中的TencentOpenAPI.framework和TencentOpenApi_IOS_Bundle.bundle文件拷贝到应用开发的目录下。
然后将TencentOpenAPI.framework从SDK的保存目录拖拽到工程导航视图(project navigator)中的Frameworks虚拟目录下。

2.添加SDK依赖的系统库文件。分别是”Security.framework”, “libiconv.dylib”,“SystemConfiguration.framework”,“CoreGraphics.Framework”、“libsqlite3.dylib”、“CoreTelephony.framework”、“libstdc++.dylib”、“libz.dylib”。

2.1点击target

2.2点击General

2.3点击+

2.4在输入框中输入关键字

2.5选中包,点击add添加,其他几个也一样

3. 在Xcode中打开工程配置文件,选择“Build Phases”一栏。

4.在Build Phases中选择展开Copy Bundle Resources

5.点击+

6. 选择“Add Other...”,进入iOS SDK文件所在目录,选择TencentOpenApi_IOS_Bundle.bundle,点击回车或者点击“Open”。

返回后看到TencentOpenApi_IOS_Bundle.bundle已经在“Copy Bundle Resources”中出现。

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

8.点击Other Linker Flags

9.修改工程配置文件
在XCode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type”添加一条新的“URL scheme”,新的scheme = tencent + appid。如果您使用的是XCode3或者更低的版本,则需要在plist文件中添加。Demo中我们注册的appid是222222。如下图

10.点击URL Types

11.点击+


第五步:搭建完环境后就可以进行编程了

1.重写AppDelegate 的handleOpenURL和openURL方法openURL:

- (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];
}

2.在需要书写有关代码的文件中添加头文件#import <TencentOpenAPI/TencentOAuth.h>

3.在appdelegate中定义一个TencentOAuth属性

4.添加TencentSessionDelegate代理

5.初始化redirectURI(这里需要填写注册APP时填写的域名。默认可以不用填写。建议不用填写。demo中注册时的地址是“www.qq.com”):
  _tencentOAuth.redirectURI = @"www.qq.com"; 

6.设置应用需要用户授权的API列表。 (其中关键字段要用宏方式来写,不能直接写成字符串)
(建议如果授权过多的话,可能会造成用户不愿意授权。这里最好只授权应用需要用户赋予的授权。):
  _permissions =  [[NSArray arrayWithObjects:k_OPENPERMISSION_GET_USER_INFO, kOPEN_PERMISSION_GET_SIMPLE_USER_INFO] retain]; 

7.调用SDK登录

登录时,调用TencetnOAuth对象的authorize方法:
[_tencentOAuth authorize:_permissions inSafari:NO];

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

登录成功:
  @protocol TencentSessionDelegate <NSObject>
- (void)tencentDidLogin
{
    _labelTitle.text = @"登录完成";
    if (_tencentOAuth.accessToken && 0 != [_tencentOAuth.accessToken length])
    {
         // 记录登录用户的OpenID、Token以及过期时间
     NSLog(@"accessToken = %@", _oauth.accessToken);
      NSLog(@"opendid = %@", _oauth.openId);
       
 NSLog(@"expirationDate = %@", _oauth.expirationDate);
   

[_oauth getUserInfo]; // 获取用户信息,返回值是BOOL类型,需要执行getUserInfoResponse:方法才能获取用户资料

    }
    else
   
    {
        _labelAccessToken.text = @"登录不成功 没有获取accesstoken";
   
    }
        }

非网络错误导致登录失败:
  @protocol TencentSessionDelegate <NSObject>
-(void)tencentDidNotLogin:(BOOL)cancelled
{
if (cancelled)
{
_labelTitle.text = @"用户取消登录";
}
else 
{
_labelTitle.text = @"登录失败";
}
}  


网络错误导致登录失败:
 @protocol TencentSessionDelegate <NSObject>
-(void)tencentDidNotNetWork
{
_labelTitle.text=@"无网络连接,请设置网络";
}

9.通过getUsrInfoResponse:方法获取用户信息

//获取用户信息
- (void)getUserInfoResponse:(APIResponse *)response
{
    NSLog(@"nickname = %@", response.jsonResponse[@"nickname"]);
   
//其中response.jsonResponse是存储用户信息的字典

NSLog(@"%@", response.jsonResponse);

}

   

第六步:

特别提示: 
1.由于登录是异步过程,这里可能会由于用户的行为导致整个登录的的流程无法正常走完,即有可能由于用户行为导致登录完成后不会有任何登录回调被调用。开发者在使用SDK进行开发的时候需要考虑到这点,防止由于一直在同步等待登录的回调而造成应用的卡死,建议在登录的时候将这个实现做成一个异步过程。
2.获取到的access token具有3个月有效期,过期后提示用户重新登录授权。
3. 第三方网站可存储access token信息,以便后续调用OpenAPI访问和修改用户信息时使用。如果需要保存授权信息,需要保存登录完成后返回的accessToken,openid 和 expirationDate三个数据,下次登录的时候直接将这三个数据是设置到TencentOAuth对象中即可。
获得:
[_tencentOAuth accessToken] ;
[_tencentOAuth openId] ;
[_tencentOAuth expirationDate] ;
设置:
[_tencentOAuth setAccessToken:accessToken] ;
[_tencentOAuth setOpenId:openId] ;
[_tencentOAuth setExpirationDate:expirationDate] ;

4. 建议应用在用户登录后,即调用getUserInfo接口获得该用户的头像、昵称并显示在界面上,使用户体验统一。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值