iOS第三方登錄總結(jié)(一)Facebook

由于當(dāng)前項(xiàng)目需要有FB 、Line 、Twitter、Apple 三方登錄我一一介紹他們的集成步驟和踩的坑
首先是FB登錄
1.申請(qǐng)F(tuán)B賬號(hào)
2.創(chuàng)建應(yīng)用
3.獲取應(yīng)用編號(hào)
4.配置相關(guān)信息
5.xcode配置
6.代碼集成

一、創(chuàng)建應(yīng)用
1.首先需要登錄FB開(kāi)發(fā)者平臺(tái)(https://developers.facebook.com/apps)去構(gòu)建自己的應(yīng)用,你需要有一個(gè)FB的賬號(hào),沒(méi)有的話(huà)需要去注冊(cè)一個(gè).

2.然后添加iOS平臺(tái) - 填寫(xiě)應(yīng)用名稱(chēng) - 創(chuàng)建應(yīng)用編號(hào) - 為應(yīng)用添加產(chǎn)品(FB登錄),然后到設(shè)置中完善相關(guān)信息,然后保存,配置Bundle ID,這些都是按照流程一步步填寫(xiě)

3.配置完成之后你就可以得到xcode中info.plist文件中的配置信息
info.plist填寫(xiě)分成三部分
第一部分填寫(xiě)
URL types 填寫(xiě)自己對(duì)應(yīng)的ID


image.png

第二部分填寫(xiě)


image.png

第三部分填寫(xiě)


image.png

二、xcode配置(接入SDK)
新項(xiàng)目一般推薦Swift package 去添加地址是 https://github.com/facebook/facebook-ios-sdk

去添加


image.png

把地址copy進(jìn)去 add


image.png

根據(jù)自己實(shí)際情況添加對(duì)應(yīng)的庫(kù) 如果不清楚選哪個(gè)都選上也沒(méi)問(wèn)題就是包會(huì)大點(diǎn)


image.png

添加成功會(huì)出現(xiàn)地址


image.png

加載時(shí)間比較長(zhǎng)耐心加載 如果加載失敗可以開(kāi)啟翻墻或者修改host來(lái)更新

三、代碼集成
1.Appdelegate中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ///在appdelegate 配置
    [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    if ([url.scheme hasPrefix:@"fb"]) {
        return [[FBSDKApplicationDelegate sharedInstance] application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
    }
    return false;
}

管理一個(gè)Manager去維護(hù)FB登錄登錄邏輯

#import <FBSDKLoginKit/FBSDKLoginKit.h>
以下代碼是登錄邏輯
if (!self.isLogin) {
///public_profile email pages_manage_posts pages_read_engagement pages_read_user_content pages_show_list 對(duì)應(yīng)的獲取的權(quán)限這樣才能
        NSArray *scope = @[@"public_profile",
                           @"email",
                           @"pages_manage_posts",
                           @"pages_read_engagement",
                           @"pages_read_user_content",
                           @"pages_show_list",
        ];
        FBSDKLoginManager *fbLoginManager = [[FBSDKLoginManager alloc] init];
        fbLoginManager.defaultAudience = FBSDKDefaultAudienceEveryone;
        FBSDKLoginConfiguration *configuration = [[FBSDKLoginConfiguration alloc] initWithPermissions:scope tracking:FBSDKLoginTrackingEnabled];
        [fbLoginManager logInFromViewController:controller
                                  configuration:configuration
                                     completion:^(FBSDKLoginManagerLoginResult * _Nullable result, NSError * _Nullable error) {

            if (error) {
                handler(nil,error);
            } else if(result) {
                if (!result.isCancelled) {
                    BBLAuthResultModel *authResult = [[BBLAuthResultModel alloc] init];
                    authResult.tokenString = result.token.tokenString;
                    authResult.userID = result.token.userID;
                    handler(authResult,nil);
                } else {
                    NSError *error = [NSError errorWithDomain:AuthorizationErrorDomin code:AuthorizationErrorCancelCode userInfo:nil];
                    handler(nil,error);
                }
            }

        }];

    } else {
        FBSDKAccessToken *accessToken = [FBSDKAccessToken currentAccessToken];
        BBLAuthResultModel *authResult = [[BBLAuthResultModel alloc] init];
        authResult.tokenString = accessToken.tokenString;
        authResult.userID = accessToken.userID;
        handler(authResult,nil);
    }

代碼 地址
https://github.com/Tong-MX/FaceBookLogin.git

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

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

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