iOS 基於第三方QQ授權登入,ios第三方qq授權
基於iOS實現APP的第三方QQ登陸,接入第三方SDK時的一個基本的步驟:
1,找到相關的開放平台,QQ互聯平台,http://connect.qq.com/;
2,註冊成功後建立自己的APP,填寫一堆基本訊號後獲得一個App_Key,就是你APP的唯一識別碼;
3,下載對應的SDK,並且閱讀其中的開發文檔或demo,通常看開發文檔比較直觀,如果看demo,有些SDK的demo簡直不忍直視;
4,嵌入SDK中對應功能,測試成功後提交第三方平台審核,等審核通過後就可以正式接入第三方SDK的功能了;
5,完成所有功能後就提交AppStore審核吧,大概一周左右即可。
一,QQ登入授權開發:
1,按照開發文檔匯入SDK,然後把註冊成功後擷取到的Key加入到Url Schemes中,例如:tencent1101737816,注意這些文檔寫的很清楚;
2,在AppDelegate.m中實現下面方法,注意,直接複製代碼,兩者寫其一即可,當然了別忘了引入標頭檔,這是用作返回APP時候用的回呼函數。
- (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];}
3,註冊並授權,注意授權這裡會出現問題
<span style="white-space:pre"></span>NSArray *_permissions = [NSArray arrayWithObjects:kOPEN_PERMISSION_GET_INFO, kOPEN_PERMISSION_GET_USER_INFO, kOPEN_PERMISSION_GET_SIMPLE_USER_INFO, nil];
<span style="white-space:pre"></span>[_tencentOAuth authorize:_permissions inSafari:NO]; //授權</span>
4,實現登入成功與否的回呼函數,實現協議TencentSessionDelegate,代碼如下:
- (void)tencentDidLogin{ _labelTitle.text = @"登入完成"; if (_tencentOAuth.accessToken && 0 != [_tencentOAuth.accessToken length]){ // 記錄登入使用者的OpenID、Token以及到期時間 _labelAccessToken.text = _tencentOAuth.accessToken; }else{ _labelAccessToken.text = @"登入不成功 沒有擷取accesstoken"; }} -(void)tencentDidNotLogin:(BOOL)cancelled{ if (cancelled){ _labelTitle.text = @"使用者取消登入"; }else{ _labelTitle.text = @"登入失敗"; }} -(void)tencentDidNotNetWork{ _labelTitle.text=@"無網路連接,請設定網路";}
5,如果代碼能走到登入完成這裡,並且獲得了accesstoken,那說明我們的登入流程就走完了,剩下的舊是擷取使用者具體的資訊了,如暱稱,城市等等;
6,如何擷取暱稱呢,文檔提供了這樣一個方法
[_tencentOAuth getUserInfo];
但是傳回型別是個BOOL類似,很多朋友就鬱悶了,這是什麼情況,經過看代碼,發現如果開發人員調用了這個方法,如果成功則會實現下面協議TencentSessionDelegate裡面的回呼函數:
-(void)getUserInfoResponse:(APIResponse *)response{ // NSLog(@"respons:%@",response.jsonResponse); self.name.text = [response.jsonResponse objectForKey:@"nickname"];}
這樣就能得到我們想要的暱稱等資訊,到這裡就算完成了我們的QQ登入授權了,剩下的就是發給後台這些登入資訊,並且保持授權成功後的token等,看官方文檔說明。