基於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等。看官方文檔說明。