iOS第三方登录总结(一)Facebook

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

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

2.然后添加iOS平台 - 填写应用名称 - 创建应用编号 - 为应用添加产品(FB登录),然后到设置中完善相关信息,然后保存,配置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去维护FB登录登录逻辑

#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);
    }

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容