iOS原生QQ第三方登入
阿新 • • 發佈:2019-01-25
本文簡介
最近在做QQ登入,這裡把QQ原生第三方登入整合過程和大家分享一下。
首先需要下載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登入)。
如果文章中有錯誤、歧義或者模糊的地方,還請多多指出。