Skip to content

Tong-MX/FaceBookLogin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

71d7576 · Jan 12, 2023

History

2 Commits
Jan 12, 2023
Jan 12, 2023
Jan 12, 2023

Repository files navigation

FaceBookLogin

FaceBook 登录总结

由于当前项目需要有Facebook 、Line 、Twitter、Apple 三方登录我一一介绍他们的集成步骤和踩的坑 首先是Facebook登录 1.申请facebook账号 2.创建应用 3.获取应用编号 4.配置相关信息 5.xcode配置 6.代码集成

一、创建应用 1.首先需要登录facebook开发者平台(https://developers.facebook.com/apps)去构建自己的应用,你需要有一个facebook的账号,没有的话需要去注册一个.

2.然后添加iOS平台 - 填写应用名称 - 创建应用编号 - 为应用添加产品(facebook登录),然后到设置中完善相关信息,然后保存,配置Bundle ID,这些都是按照流程一步步填写

3.配置完成之后你就可以得到xcode中info.plist文件中的配置信息 info.plist填写分成三部分 第一部分填写 URL types 填写自己对应的ID image.png

第二部分填写 image.png

第三部分填写 image.png

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

去添加 image.png

把地址copy进去 add image.png

根据自己实际情况添加对应的库 如果不清楚选哪个都选上也没问题就是包会大点 image.png

添加成功会出现地址 image.png 加载时间比较长耐心加载 如果加载失败可以开启翻墙或者修改host来更新

三、代码集成 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;
}

管理一个Manager去维护Facebook登录登录逻辑

#import <FBSDKLoginKit/FBSDKLoginKit.h>
以下代码是登录逻辑
if (!self.isLogin) {
///public_profile email pages_manage_posts pages_read_engagement pages_read_user_content pages_show_list 对应的获取的权限这样才能
        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);
    }

About

FaceBook 登录总结

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published