iOS Universal Links 微信三方登錄步驟和坑

簡介
隨著iOS和微信sdk版本的更新涡扼,微信登錄比之前配置麻煩了一些


截屏2020-12-30 下午1.38.16.png

新版本呻此,需要配置Universal Links,這里就不贅述Universal Links是什么東東了事扭,感興趣的小伙伴可以自行百度一下

配置Universal Links
要做的很簡單虏束,但是這里比較繁瑣啤斗,每一步都要小心表箭,容易進坑
1、蘋果開發(fā)者賬號配置
登錄自己公司的蘋果開發(fā)賬號钮莲,選擇Certificates, Identifiers & Profiles選項,按照下圖的1和2順序點擊


截屏2020-12-30 下午1.43.01.png

進到如下圖頁面免钻,把紅圈里的選項選中狀態(tài)
截屏2020-12-30 下午1.48.12.png

2、Xcode工程配置

打開Associated Domains開關崔拥,將Universal Links域名加到配置上(注:只寫域名即可极舔,不帶paths的值,appdelegate里的Universal Links和微信平臺的Universal Links需要域名加paths的值)握童,下圖紅框里
截屏2020-12-30 下午1.52.16.png

如果沒有Associated Domains選項姆怪,則添加。在箭頭處添加

配置URL Types,URL Schemes處填寫在微信開放平臺申請的AppId
截屏2020-12-30 下午2.06.29.png

截屏2020-12-30 下午2.04.49.png

配置info.plist澡绩,“LSApplicationQueriesSchemes“欄添加 "weixin"和"weixinULAPI
截屏2020-12-30 下午2.08.16.png

"
3稽揭、配置JSON文件

創(chuàng)建一個空白文件(必須純文本,命名為apple-app-site-association肥卡,去除后綴名)溪掀。這里建議讓后臺人員在其本地創(chuàng)建,避免文件傳輸時步鉴,文件自動被更改格式揪胃、后綴自動添加等問題。

內容如下
截屏2020-12-30 下午2.09.48.png
截屏2021-02-26 下午2.28.32.png

說明:appID的格式為"蘋果賬號的團隊ID.項目的BundleID",注意兩個ID之間的半角符"."氛琢,不知道蘋果賬號的團隊ID和項目的BundleID在哪的小伙伴看上邊寫的“1喊递、蘋果開發(fā)者賬號配置”的圖二,圖二的右上角被紅線遮蓋住的就是TeamId和BundleId,
如果多個項目都用到微信三方登錄阳似,文件中的paths字段對應的value就不要用“*”這個通配符了骚勘,用如圖所示的paths起一個項目的名字

4、后臺服務器配置
把文件apple-app-site-association,放置在服務器的根目錄(不要問我俏讹,讓后臺自己去理解当宴,我們是最后運維幫助弄的),然后讓他提供一個https的url地址泽疆,格式是“正式域名/apple-app-site-association”户矢,如:https://www.baidu.com/apple-app-site-association

達到的效果是殉疼,瀏覽器打開這個地址梯浪,可以下載這個文件。另外用GET請求這個地址株依,返回文件的JSON內容(這里通過工具Postman進行試驗)
注意:返回的數據不能是亂碼驱证,如果是亂碼,則文件不對恋腕,最好用編輯器去寫抹锄,我用的mac自帶的文本編輯器出錯了!

5荠藤、微信開放平臺中去配置伙单,在紅圈里配置


截屏2020-12-30 下午2.17.32.png

6、導入sdk
cocoapods參考微信開發(fā)文檔吧
手動導入這里需要注意:
(1)將 SDK 文件中包含的 libWeChatSDK.a哈肖,WXApi.h吻育,WXApiObject.h 三個文件添加到你所建的工程中
(2)開發(fā)者需要在工程中鏈接上:Security.framework, CoreGraphics.framework, WebKit.framework。
(3)在你的工程文件中選擇 Build Setting淤井,在"Other Linker Flags"中加入"-ObjC -all_load"布疼,在 Search Paths 中添加 libWeChatSDK.a ,WXApi.h币狠,WXApiObject.h
這里會有一個問題游两,運行的時候會報錯


截屏2020-12-30 上午10.29.08.png

如果有圖上這個問題,
截屏2020-12-30 下午2.23.01.png
如圖加入libc++

7漩绵、初始化代碼
// 微信SDK注冊贱案,universal link
[WXApi registerApp:APP_ID universalLink: UNIVERSAL_LINK];

補充說明:
如果后臺提供的url地址是https://www.baidu.com/apple-app-site-association。那么止吐,
Associated Domains中填寫applinks:www.baidu.com宝踪,
代碼注冊方法及微信開放平臺中都填https://www.baidu.com/

微信文檔中的方法
appdelegate.m文件中實現以下方法

  • (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [WXApi handleOpenURL:url delegate:self];
    }

  • (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [WXApi handleOpenURL:url delegate:self];
    }

  • (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {
    return [WXApi handleOpenUniversalLink:userActivity delegate:self];
    }
    -(BOOL)application:(UIApplication )app openURL:(NSURL )url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> )options{
    return [WXApi handleOpenURL:url delegate:self];
    }
    -(void) onReq:(BaseReq
    )reqonReq{
    }
    -(void) onResp:(BaseResp
    )resp{
    }
    在需要實現微信按鈕登錄的時候代碼
    SendAuthReq
    req =[[SendAuthReq alloc]init];
    req.scope = @"snsapi_userinfo";
    req.state = @"123";
    //第三方向微信終端發(fā)送一個SendAuthReq消息結構
    [WXApi sendReq:req completion:^(BOOL success) {
    }];

登錄成功時,會回調-(void) onResp:(BaseResp*)resp{
}方法
如果 resp.errCode == 0 則登錄成功

登錄成功以后碍扔,想要獲取openid瘩燥、access_token等,方法為網絡請求https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code
appid為微信三方登錄平臺注冊的AppId不同,secret為微信三方登錄平臺注冊的secret厉膀,需要管理員生成,code為-(void) onResp:(BaseResp*)resp{
}方法回調中的resp.code,根據獲取的openid站蝠、access_token,可以利用下面的地址去獲取昵稱等信息https://api.weixin.qq.com/sns/userinfo?access_token=%@&openid=%@卓鹿,
時間緊就大概寫這么多吧菱魔,不對的地方歡迎指正

參考文檔:
http://www.reibang.com/p/3a46eb4a107f?from=groupmessage http://www.reibang.com/p/8e8840dcd54d

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市吟孙,隨后出現的幾起案子澜倦,更是在濱河造成了極大的恐慌,老刑警劉巖杰妓,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件藻治,死亡現場離奇詭異,居然都是意外死亡巷挥,警方通過查閱死者的電腦和手機桩卵,發(fā)現死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來倍宾,“玉大人雏节,你說我怎么就攤上這事「咧埃” “怎么了钩乍?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長怔锌。 經常有香客問我寥粹,道長,這世上最難降的妖魔是什么埃元? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任涝涤,我火速辦了婚禮,結果婚禮上亚情,老公的妹妹穿的比我還像新娘妄痪。我一直安慰自己,他們只是感情好楞件,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布衫生。 她就那樣靜靜地躺著,像睡著了一般土浸。 火紅的嫁衣襯著肌膚如雪罪针。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天黄伊,我揣著相機與錄音泪酱,去河邊找鬼。 笑死,一個胖子當著我的面吹牛墓阀,可吹牛的內容都是我干的毡惜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼斯撮,長吁一口氣:“原來是場噩夢啊……” “哼经伙!你這毒婦竟也來了?” 一聲冷哼從身側響起勿锅,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤帕膜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后溢十,有當地人在樹林里發(fā)現了一具尸體垮刹,經...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年张弛,在試婚紗的時候發(fā)現自己被綠了荒典。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡乌庶,死狀恐怖种蝶,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情瞒大,我是刑警寧澤螃征,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站透敌,受9級特大地震影響盯滚,放射性物質發(fā)生泄漏。R本人自食惡果不足惜酗电,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一魄藕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧撵术,春花似錦背率、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至划滋,卻和暖如春饵筑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背处坪。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工根资, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留架专,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓玄帕,卻偏偏與公主長得像部脚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子裤纹,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容