iOS QQ登录 傻瓜式集成
2014-11-25 11:25
225 查看
一,iOS SDK 下载 请到SDK下载页面下载最新版本QQ登录iOS SDK。 二,iOS SDK目录结构 iOS SDK包中带有两个文件: 1. TencentOpenAPI.framework打包了iOS SDK的头文件定义和具体实现。 2. TencentOpenApi_iOS_Bundle.bundle 打包了iOS SDK需要的资源文件。 三,将iOS SDK文件添加到工程中 1. 将iOS SDK中的TencentOpenAPI.framework和TencentOpenApi_IOS_Bundle.bundle文件拷贝到应用开发的目录下。 然后将TencentOpenAPI.framework从SDK的保存目录拖拽到工程导航视图(project navigator)中的Frameworks虚拟目录下。 2. 在弹出的对话框中勾选“Create groups for any added folders”,去掉“copy items into destination group’s folder(if needed)”,在Add to targets中选择要加入SDK的target之后点击finish。
完成之后就将iOS SDK的framework文件加入了开发工程中。 3. 添加SDK依赖的系统库文件。分别是”Security.framework”, “libiconv.dylib”,“SystemConfiguration.framework”,“CoreGraphics.Framewor k”、“libsqlite3.dylib”、“CoreTelephony.framework”、“libstdc++.dylib”、“libz.dylib”。 在Xcode中打开工程配置文件,选择“summary”一栏。 4. 在“summary”中选择“Linked Frameworks and Libraries”一栏,点击“+”图标。 5. 直接在默认库文件中选择后点击“Add”添加“SystemConfiguration.framework”为例 6. 返回后看到“SystemConfiguration.framework”已经在“Linked Frameworks and Libraries”中出现。 7. 在Xcode中打开工程配置文件,选择“Build Phases”一栏。 8. 修改必要的工程配置属性。 在工程配置中的“Build Settings”一栏中找到“Linking”配置区,给“Other Linker Flags”配置项添加属性值“-fobjc-arc”。 四,修改必要的代码 4.1 修改工程配置文件 在XCode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type”添加一条新的“URL scheme”,新的scheme = tencent + appid。如果您使用的是XCode3或者更低的版本,则需要在plist文件中添加。Demo中我们注册的appid是222222。如下图 另外在Xcode 6.0创建工程时,默认可能没有单独设置Bundle display name属性值。但是因为SDK需要用到Bundle display name的值,所以务必请检查确保这个属性存在,如果没有请添加上。 4.2 重写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]; } 4.3 在代码中实现TencentSessionDelegate协议中的方法 具体协议可以参照TencentOpenAPI.framework /Headers中的TencentOAuth.h文件 4.4 初始化iOS SDK API数据对象TencentOAuth。 (1) 创建TencentOAuth并初始化其appid,demo为222222。delegate为实现TencentSessionDelegate的对象: _tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"222222", andDelegate:self]; 这里delegate不能为空 (2) 初始化redirectURI(这里需要填写注册APP时填写的域名。默认可以不用填写。建议不用填写。demo中注册时的地址是“www.qq.com”): _tencentOAuth.redirectURI = @"www.qq.com"; (3)设置应用需要用户授权的API列表。 (建议如果授权过多的话,可能会造成用户不愿意授权。这里最好只授权应用需要用户赋予的授权。): _permissions = [[NSArray arrayWithObjects:@"get_user_info", @"get_simple_userinfo", @"add_t", nil] retain]; 五,调用SDK登录 1.登录时,调用TencetnOAuth对象的authorize方法: [_tencentOAuth authorize:_permissions inSafari:NO]; 2. 登录完成后,会调用TencentSessionDelegate中关于登录的协议方法。 登录成功: @protocol TencentSessionDelegate <NSObject> - (void)tencentDidLogin { _labelTitle.text = @"登录完成"; if (_tencentOAuth.accessToken && 0 != [_tencentOAuth.accessToken length]) { // 记录登录用户的OpenID、Token以及过期时间 _labelAccessToken.text = _tencentOAuth.accessToken; } 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=@"无网络连接,请设置网络"; } 3. 登录成功后,即可获取到access token和openid。accessToken和 openid保存在TencentOAuth对象中。可以通过相应的属性方法直接获得。 [_tencentOAuth accessToken] ; [_tencentOAuth openId] ; 特别提示: 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接口获得该用户的头像、昵称并显示在界面上,使用户体验统一。[/code]
相关文章推荐
- iOS开发集成友盟,腾讯QQ登录授权失败
- iOS的应用中集成QQ第三方登录获取相关信息
- QQ登录接口集成,QQ+登录ASP.net+代码,+QQ+oauth的使用
- ios开发第一篇 简单的qq登录窗口
- 无处不在,详解iOS集成第三方登录(SSO授权登录<无需密码>)(转载)
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- iOS集成第三方登录(SSO授权登录<无需密码>
- QQ登录接口集成,QQ+登录ASP.net+代码,+QQ+oauth的使用
- [iOS常见问题] 关于使用QQ做第三方登录的问题!
- 资料引用(1.qq授权登录;2.调节ios音量(SystemVolumeNativeExtension);3.MP4v2库)
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- 基于OAuth2.0协议的QQ第三方授权登录iOS代码分析
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- 在网站中开发集成QQ登录源代码php
- QQ登录接口集成,QQ+登录ASP.net+代码,+QQ+oauth的使用
- iOS第三方登录qq
- QQ登录接口集成,QQ+登录ASP.net+代码,+QQ+oauth的使用 .
- 基于第三方QQ授权登录和新浪微博授权登录的iOS代码分析
- ios授权登录过程中一直提示“没有安装qq”
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能