iOSQQ第三方登录

前段时间集成了微信第三方登录,今天又集成了QQ第三方登录,遇到了小坑,记录下,
首先、腾讯开放平台下载sdk包,最新的应该是3.2.0的,下载完成之后,直接导入TencentOpenApi_IOS_Bundle.bundle 和 TencentOpenAPI.framework库文件,同时,添加相应的依赖库

“SystemConfiguration.framework”、
“CoreGraphics.Framework”、
“libsqlite3.tbd”、
“CoreTelephony.framework”、
“libstdc++.tbd”、
“libz.dylib”、
Security.framework”```
在项目工程`build setting` -- `other linker flag`中添加`-fobjc-arc`注意大小写,在info中,添加`URL Type identifier = tencentopenapi  URL Scheme = tencent+appid`
接下来,可以写代码了
`appdelegate.h`,文件中导入头文件`#import `
同时,俩个代理方法
  • (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];
    }

最后,在登录页面
导入头文件`#import `同时遵循`TencentSessionDelegate`三个代理方法
  • (IBAction)loginAction:(id)sender {
    _tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"101400458" andDelegate:self];
    _tencentOAuth.authShareType = AuthShareType_QQ;//特别要注意,登录前需要授权,否则会爆出未授权错误(多看文档还是有好处的哈)
    NSArray *permissions = [NSArray arrayWithObjects:@"get_user_info",@"get_simple_userinfo", @"add_t", nil];
    [_tencentOAuth authorize:permissions];
    }
最后三个代理方法

pragma mark -- TencentSessionDelegate

  • (void)tencentDidLogin
    {
    NSLog(@"yes");
    NSLog(@"%@ -- %@",_tencentOAuth.accessToken, _tencentOAuth.openId);// 打印下accessToken和openId 代表我成功了,存储起来用的时候直接用,或者此处请求服务器接口传给服务器,获取我们项目中用到的userSession
    //获取用户个人信息
    [_tencentOAuth getUserInfo];

}

-(void)tencentDidNotLogin:(BOOL)cancelled
{
if (cancelled) {
NSLog(@"取消登录");
}
}
-(void)tencentDidNotNetWork
{
NSLog(@"tencentDidNotNetWork");
}

pragma mark -- 获取用户个人信息

  • (void)getUserInfoResponse:(APIResponse*)response
    {
    NSLog(@"response -- %@", response.jsonResponse);
    }
做他们该做的事,以上,就是第三方qq登录,纯手打,nice

你可能感兴趣的:(iOSQQ第三方登录)