日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一步一步实现iOS QQ第三方登录

發布時間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一步一步实现iOS QQ第三方登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近在公司應用中集成QQ登錄的時候遇到一些波折(坑點),覺得還是有必要記錄一下.

一.集成SDK

1.集成官方Framework

首先下載官網SDK iOS_SDK下載,目前來說最新的包是V3.1.0,下載完解壓后你會看到

  • TencentOpenAPI.framework打包了iOS SDK的頭文件定義和具體實現
  • TencentOpenApi_iOS_Bundle.bundle 打包了iOS SDK需要的資源文件 然后將這兩個文件拖入到工程中.

2.Cocoapods集成方式

除了導入官方Framework的方式,還有一種方式是集成Pods方式:TencentOpenApiSDK 目前我用的版本是2.9.5. 我用的方式是Cocoapods集成的方式.如何選擇請根據自身情況做出決定.

二.配置工程

1.添加SDK依賴的系統庫文件

此外還需要導入一些庫分別是: "SystemConfiguration.framework" "Security.framework" "CoreTelephony.framework" "CoreGraphics.Framework" "libiconv.tbd" "libsqlite3.tbd" "libstdc++.tbd" "libz.tbd"

TIPS: .dylib在XCode7以后變成.tbd了,如果你是Xcode7以下的版本,就是.dylib,不過庫的名字一樣

在Xcode中打開工程配置文件,選擇“general”一欄,在最下面找到"Linked Framewords and Libraries"選項點擊下面添加按鈕添加上面的庫即可.

2. 修改必要的工程配置屬性。

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

3.Info.Plist設置

在工程配置中的"Info"中找到"URL Types",添加一條新的“URL scheme”. 注意:

Identifier: tencentopenapi URL Schemes: tencent + appid 復制代碼

其中Identifier 和URL Schemes是必填項,Identifier是tencentopenapi,URL Schemes是tencent加上你在官網申請的appid. 申請APPID

你以為到了這步就完了嗎,NO NO NO 要想實現點擊之后跳轉到QQ是應用間跳轉的效果而不是打開一個登錄網頁的話我們還得再Info.plist表中添加一下鏈接. 找到工程的Info.plist,然后添加"LSApplicationQueriesSchemes"

<key>LSApplicationQueriesSchemes</key><array><string>mqqapi</string><string>mqq</string><string>mqqOpensdkSSoLogin</string><string>mqqconnect</string><string>mqqopensdkdataline</string><string>mqqopensdkgrouptribeshare</string><string>mqqopensdkfriend</string><string>mqqopensdkapi</string><string>mqqopensdkapiV2</string><string>mqqopensdkapiV3</string><string>mqzoneopensdk</string><string>mqqopensdkapiV3</string><string>mqqopensdkapiV3</string><string>mqzone</string><string>mqzonev2</string><string>mqzoneshare</string><string>wtloginqzone</string><string>mqzonewx</string><string>mqzoneopensdkapiV2</string><string>mqzoneopensdkapi19</string><string>mqzoneopensdkapi</string><string>mqzoneopensdk</string></array> 復制代碼

三.業務集成

1. AppDelegate

到了這里,我們的工程配置算是完成了.接下來在AppDelegate中 #import <TencentOpenAPI/TencentOAuth.h> 并且重寫AppDelegate 的handleOpenURL和openURL方法

openURL: - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{return [TencentOAuth HandleOpenURL:url]; }handleOpenURL: - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{return [TencentOAuth HandleOpenURL:url]; } 復制代碼

2.初始化iOS SDK API數據對象TencentOAuth

(1) 創建TencentOAuth并初始化其appid,demo為123456789。delegate為實現TencentSessionDelegate的對象:

_tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"123456789", andDelegate:self]; 復制代碼

這里delegate不能為空

(2)設置應用需要用戶授權的API列表。 (建議如果授權過多的話,可能會造成用戶不愿意授權。這里最好只授權應用需要用戶賦予的授權。):

NSArray *permissions = [NSArray arrayWithObjects:kOPEN_PERMISSION_GET_INFO, kOPEN_PERMISSION_GET_USER_INFO, kOPEN_PERMISSION_GET_SIMPLE_USER_INFO, nil]; // 這里調起登錄[_tencentOAuth authorize:permissions]; 復制代碼

注意: 這個地方官網是下面的寫法

_permissions?=?[[NSArray?arrayWithObjects:@"get_user_info",@"get_simple_userinfo",?@"add_t",?nil]?retain]; 復制代碼

但是本人試驗了一下之后會報"msg = "this api without user authorization";ret=100030"

遵守代理

需要遵守TencentSessionDelegate協議,并在代碼中實現協議中的方法,具體方法很多,這里就不一一列舉了,具體協議可以參照TencentOpenAPI.framework /Headers中的TencentOAuth.h文件

調用SDK登錄

1.調用登錄的方法很簡單

[_tencentOAuth authorize:permissions]; 復制代碼

2.登錄完成之后,會調用TencentSessionDelegate中關于登錄的協議方法

//登錄成功: - (void)tencentDidLogin {if (_tencentOAuth.accessToken.length > 0) {// 獲取用戶信息[_tencentOAuth getUserInfo];} else {NSLog(@"登錄不成功 沒有獲取accesstoken");} }//非網絡錯誤導致登錄失敗: - (void)tencentDidNotLogin:(BOOL)cancelled {if (cancelled) {NSLog(@"用戶取消登錄");} else {NSLog(@"登錄失敗");} } 復制代碼

3.獲取用戶信息 實現- (void)getUserInfoResponse:(APIResponse*) response;方法,從response獲取用戶的個人信息

// 獲取用戶信息 - (void)getUserInfoResponse:(APIResponse *)response {if (response && response.retCode == URLREQUEST_SUCCEED) {NSDictionary *userInfo = [response jsonResponse];NSString *nickName = userInfo[@"nickname"];// 后續操作...} else {NSLog(@"QQ auth fail ,getUserInfoResponse:%d", response.detailRetCode);} } 復制代碼

4.增量授權 當第三方應用調用某個API接口時,如果服務器返回操作未被授權,則會觸發增量授權邏輯。第三方應用需自行實現tencentNeedPerformIncrAuth:withPermissions:協議接口才能夠進入增量授權邏輯,否則默認第三方應用放棄增量授權。示例如下:

- (BOOL)tencentNeedPerformIncrAuth:(TencentOAuth *)tencentOAuth withPermissions:(NSArray *)permissions {// incrAuthWithPermissions是增量授權時需要調用的登錄接口// permissions是需要增量授權的權限列表[tencentOAuth incrAuthWithPermissions:permissions];return NO; // 返回NO表明不需要再回傳未授權API接口的原始請求結果;// 否則可以返回YES } 復制代碼

結束語

至此如何集成QQ第三方登錄就介紹完畢,本人集成的時候也是跳了幾個坑,慢慢來總會弄好的.如果大家有啥問題可以issue我.

轉載于:https://juejin.im/post/5aa53fb55188255581549a0c

總結

以上是生活随笔為你收集整理的一步一步实现iOS QQ第三方登录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。