QQ三方登錄(QQ原生三方登錄)

一、QQ三方登錄的準備工作

1.下載最新的SDK
http://wiki.open.qq.com/wiki/mobile/SDK下載

doc: 為說明文檔, 方法參數(shù)說明。
sample 這個是簡單的demo
TencentOpenApi_IOS_Bundle.bundle   資源文件包
TencentOpenApi.framework     核心開發(fā)框架

騰訊開發(fā)平臺上沒有QQ三方登錄的相關(guān)文檔,可以搜下QQ互聯(lián),那上面比較詳細。
2.添加依賴
最簡單的方法:在sample里,打開項目,照著這個項目里的依賴抄上去。

20160617162349630.jpeg

3.在工程配置中的“Build Settings”一欄中找到“Linking”配置區(qū),給“Other Linker Flags”配置項添加屬性值“-fobjc-arc”


20160617162625160.jpeg

4.選擇項目,targets,點擊info,點開下面的URL Types,點擊加號
在URL Schemes里填寫tencent + aped。
5.在info.plist文件中加入 LSApplicationQueriesSchemes
這個也是從sample里復制粘貼的。


20160617175053663.jpeg

二、QQ三方登錄在代碼中的實現(xiàn)

1.引入頭文件,并遵循代理

#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/TencentOAuth.h>

@interface AppDelegate ()<QQApiInterfaceDelegate>
@end

2.在添加跳轉(zhuǎn)的請求方法

// 從微信端打開第三方APP會調(diào)用此方法,此方法再調(diào)用代理的onResp方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    [TencentOAuth HandleOpenURL:url];
    [QQApiInterface handleOpenURL:url delegate:self];
    return YES;
}

- (BOOL)application:(UIApplication*)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{
  
    [QQApiInterface handleOpenURL:url delegate:self];
    [TencentOAuth HandleOpenURL:url];
    return YES;
    
}

3.QQ登錄按鈕響應事件對應的控制器引入頭文件,準守協(xié)議

#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/QQApiInterfaceObject.h>
@interface ViewController ()<TencentSessionDelegate>
{
    TencentOAuth *_tencentOAuth;
    NSMutableArray *_permissionArray;   //權(quán)限列表
}
@end

4.點擊QQ登錄按鈕之后的代碼

- (IBAction)qqLogin:(id)sender {
   
    _tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"1105593761" andDelegate:self];
     _permissionArray = [NSMutableArray arrayWithObjects:
                            kOPEN_PERMISSION_GET_SIMPLE_USER_INFO,
                            nil];
    [_tencentOAuth authorize:_permissionArray];
}
#pragma TencentSessionDelegate
/**
 * [該邏輯未實現(xiàn)]因token失效而需要執(zhí)行重新登錄授權(quán)。在用戶調(diào)用某個api接口時,如果服務器返回token失效,則觸發(fā)該回調(diào)協(xié)議接口,由第三方?jīng)Q定是否跳轉(zhuǎn)到登錄授權(quán)頁面,讓用戶重新授權(quán)。
 * \param tencentOAuth 登錄授權(quán)對象。
 * \return 是否仍然回調(diào)返回原始的api請求結(jié)果。
 * \note 不實現(xiàn)該協(xié)議接口則默認為不開啟重新登錄授權(quán)流程。若需要重新登錄授權(quán)請調(diào)用\ref TencentOAuth#reauthorizeWithPermissions: \n注意:重新登錄授權(quán)時用戶可能會修改登錄的帳號
 */
- (BOOL)tencentNeedPerformReAuth:(TencentOAuth *)tencentOAuth{
    return YES;
}
- (BOOL)tencentNeedPerformIncrAuth:(TencentOAuth *)tencentOAuth withPermissions:(NSArray *)permissions{
    
    // incrAuthWithPermissions是增量授權(quán)時需要調(diào)用的登錄接口
    // permissions是需要增量授權(quán)的權(quán)限列表
    [tencentOAuth incrAuthWithPermissions:permissions];
    return NO; // 返回NO表明不需要再回傳未授權(quán)API接口的原始請求結(jié)果;
    // 否則可以返回YES
}
-(void)tencentDidLogin{
     NSLog(@"----ok-----");
    /** Access Token憑證,用于后續(xù)訪問各開放接口 */
    if (_tencentOAuth.accessToken) {
        
        //獲取用戶信息。 調(diào)用這個方法后,qq的sdk會自動調(diào)用
        //- (void)getUserInfoResponse:(APIResponse*) response
        //這個方法就是 用戶信息的回調(diào)方法。
        
        [_tencentOAuth getUserInfo];
    }else{
        
        NSLog(@"accessToken 沒有獲取成功");
    }
}
//-(NSArray *)getAuthorizedPermissions:(NSArray *)permissions withExtraParams:(NSDictionary *)extraParams{
//    NSLog(@"----%@********%@-----",permissions,extraParams);
//    return permissions;
//}
- (void)getUserInfoResponse:(APIResponse*) response{
     NSLog(@"*********");
     NSLog(@" response %@",response);
     NSLog(@"*********");
}

-(void)tencentDidNotLogin:(BOOL)cancelled{
    if (cancelled) {
        NSLog(@" 用戶點擊取消按鍵,主動退出登錄");
    }else{
        NSLog(@"其他原因, 導致登錄失敗");
    }
}
-(void)tencentDidNotNetWork{
     NSLog(@"沒有網(wǎng)絡了, 怎么登錄成功呢");
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,253評論 6 342
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,765評論 25 709
  • 轉(zhuǎn)載自http://wanwu.tech/2017/03/08/function-recursive-and-lo...
    quitus閱讀 572評論 0 0
  • 以前是端茶送客,談完事,主人一端茶,請,客人都意會,知趣地告辭了。 如今是手機送客,說著事,一摸起手機,一低頭手指...
    漳平老頑童閱讀 141評論 0 0

友情鏈接更多精彩內(nèi)容