本文簡介
最近在做QQ登錄,這裏把QQ原生第三方登錄集成過程和大家分享一下。
首先需要下載QQ SDK
———–QQ第三方登錄官方SDK下載
從下載的文件夾中可以找到下圖的兩個文件
在這裏爲了方便起見,我們在一個新的工程裏實現QQ登錄,下面開始我們的QQ第三方登錄。
1. 新建一個工程
2. 導入SDK
將下載的SDK中的
拖進新建的工程 勾選Copy items if needed
3. 添加依賴庫
Security.framework 、 SystemConfiguration.framework 、 CoreGraphics.framework 、 CoreTelephony.framework 、 libiconv.dylib 、libsqlite3.dylib 、 libstdc++.dylib 、 libz.dylib 共8個
4. 配置SDK Framework路徑
Build Settings -->搜索header 找到Framework Search Paths
打開編輯頁面 將工程的TencentOpenAPI.Framework拖進編輯頁面中
同樣的方法 配置Header Search Paths
注意:這裏是將TencentOpenAPI.Framework展開後的Headers拖進配置頁面中
5. 代碼實現
5.1 在Appdelegate類中 導入頭文件 TencentOAuth.h
#import <TencentOAuth.h>
設置scheme回調
- (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];
}
5.2 在登錄頁面實現QQ登錄 即此處的ViewController頁面
注:(5.2的操作全部在ViewController.m中進行)
5.2.1 導入登錄所需頭文件
#import <TencentOAuth.h>
#import <TencentApiInterface.h>
5.2.2 實現代理以及聲明對象
@interface ViewController ()<TencentSessionDelegate>
{
TencentOAuth*_tencentOAuth;
}
5.2.3 配置Appkey以及redirectURI 此處以官方Demo中的 數據爲例,在viewDidLoad中進行配置
- (void)viewDidLoad {
[super viewDidLoad];
_tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"222222" andDelegate:self];
_tencentOAuth.redirectURI = @"www.qq.com";
}
5.2.4 發起QQ登錄,說明想要獲取用戶的哪些信息, login函數一般作爲登錄button的點擊事件
- (void)login
{
NSArray*array = [NSArray arrayWithObjects:@"get_user_info", @"get_simple_userinfo", @"add_t", nil];
[_tencentOAuth authorize:array inSafari:NO];
}
5.2.5 實現TencentSessionDelegate代理返回函數
- (void)tencentDidLogin
{
NSLog(@"登錄完成") ;
if (_tencentOAuth.accessToken && 0 != [_tencentOAuth.accessToken length])
{
// 記錄登錄用戶的Token 以及其他信息 詳見TencentOAuth類
NSLog(@"獲取到Token--%@", _tencentOAuth.accessToken);
// 獲取到Token--216F58EF4BF7F5EA34D112XXXXXXXXXX
//獲取用戶詳細信息
[_tencentOAuth getUserInfo];
}
else
{
NSLog(@"登錄不成功 沒有獲取accesstoken");
}
}
//用戶的頭像,暱稱,城市等信息在這個方法裏返回。
-(void)getUserInfoResponse:(APIResponse *)response
{
NSLog(@"獲取到用戶詳細信息%@",[response jsonResponse]);
}
5.2.6 異常處理
-(void)tencentDidNotLogin:(BOOL)cancelled
{
if (cancelled)
{
NSLog(@"用戶取消登錄");
}
else
{
NSLog(@"登錄失敗");
}
}
-(void)tencentDidNotNetWork
{
NSLog(@"無網絡連接,請設置網絡");
}
6.URL Types配置
結語:
實現了以上步驟,第三方登錄就完成了 。
備註:(只能在真機上調用QQ登錄)。
如果文章中有錯誤、歧義或者模糊的地方,還請多多指出。