1. 程式人生 > >iOS原生QQ第三方登入

iOS原生QQ第三方登入

本文簡介

最近在做QQ登入,這裡把QQ原生第三方登入整合過程和大家分享一下。

首先需要下載QQ SDK
從下載的資料夾中可以找到下圖的兩個檔案

QQSdk

在這裡為了方便起見,我們在一個新的工程裡實現QQ登入,下面開始我們的QQ第三方登入。

1. 新建一個工程

2. 匯入SDK

將下載的SDK中的
QQSdk
拖進新建的工程 勾選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登入)。

如果文章中有錯誤、歧義或者模糊的地方,還請多多指出。