iOS 第三方登录 之 FaceBook 登录(OC + Swift)

前言

最近在开发一款意大利的APP中,需要用到FaceBook登录,记录下流程。

1. 申请FaceBook账号、创建应用、获取应用编号、填写应用信息,提交审核
2. Xcode 配置信息
3. OC 代码集成
4. Swift 代码集成

一、申请FaceBook账号、创建应用、获取应用编号、填写应用信息,提交审核

FaceBook开放平台地址 : https://developers.facebook.com/docs/facebook-login/ios

  1. 查看FaceBook的开发文档或者APP测试FaceBook登录,都需要翻墙。
    免费的可以使试试 佛跳墙 。
    收费的 同学给推荐了一个socketpro。

  2. 申请FaceBook账号流程此处省略。

3.创建应用, 添加登录功能,设置iOS 配置信息,填写应用信息,提交审核。


创建应用
选择用途
填写应用名称
3次安全验证,验证完后就创建完了
设置登录
选择iOS
选择集成方式,我选择的是cocoapods
添加bundleID
设置单点登录
配置info.plist,这个地方写的有点乱,可以先跳过,直接保存
剩下的步骤直接点继续

提交审核的流程,可以参考 审核流程

二、Xcode 配置信息

提交审核通过后,才可以跳转成功Facebook页面,或者在应用的设置页面 添加开发者人员和测试人员


image.png
  1. cocoapods 集成导入SDK
#facebook 
pod 'FBSDKLoginKit'

3.配置URL types 和 info.plist

配置URL types :fb + 应用编号

右键点击 info.plist, 选择 Open As 然后选择Source Code, 粘贴下面的代码,替换自己的应用编号 和应用名称

FacebookAppID
应用编号
FacebookDisplayName
应用名称
LSApplicationQueriesSchemes

        fbapi
        fbapi20130214
        fbapi20130410
        fbapi20130702
        fbapi20131010
        fbapi20131219
        fbapi20140410
        fbapi20140116
        fbapi20150313
        fbapi20150629
        fbapi20160328
        fbauth
        fb-messenger-share-api
        fbauth2
        fbshareextension

三、OC 代码集成

  1. 导入头文件
#import 
  1. AppDelegate.m 下 didFinishLaunchingWithOptions 方法下 初始化SDK
//初始化facebook SDK
[[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(nonnull NSDictionary *)options {
    [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url options:options];
    return YES;
}

3.登录页面 自定义按钮的 点击方法中 实现回调 获取

FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
[loginManager logInWithPermissions:@[@"public_profile"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult * _Nullable result, NSError * _Nullable error) {
     if (error) {
         NSLog(@"Process error");
      } else if (result.isCancelled) {
         NSLog(@"Cancelled");
      } else {
          NSString *facebookId =  result.token.userID;
         //用户的facebookId 传给后台 判断该用户是否绑定手机号,如果绑定了直接登录,如果没绑定跳绑定手机号页面
      }
}];

四、Swift 代码集成

  1. 导入头文件
import FBSDKCoreKit
  1. AppDelegate.swift
    func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool {
        ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
        return true
    }

    func application( _ app:UIApplication, open url:URL, options: [UIApplication.OpenURLOptionsKey :Any] = [:] ) -> Bool {
        return  ApplicationDelegate.shared.application( app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String, annotation: options[UIApplication.OpenURLOptionsKey.annotation])
    }
  1. iOS13.0配置 SceneDelegate.swift
    func scene(_ scene:UIScene, openURLContexts URLContexts:Set) {
        guard let url = URLContexts.first?.url else { return }
        ApplicationDelegate.shared.application( UIApplication.shared, open: url, sourceApplication: nil, annotation: [UIApplication.OpenURLOptionsKey.annotation] )
    }
  1. 发起登录 - Facebook 原生按钮
    创建FBLoginButton 对象,添加到view中
    let loginButton = FBLoginButton() 
    loginButton.center = view.center view.addSubview(loginButton)
    loginButton.delegate = self
    view.addSubview(loginButton)

遵循LoginButtonDelegate 并实现代理方法

    func loginButton(_ loginButton: FBLoginButton, didCompleteWith result: LoginManagerLoginResult?, error: Error?) {
        
        if result!.isCancelled {
            print("取消登录")
        } else {
            print("loginButton")
        }
    }
    
    func loginButtonDidLogOut(_ loginButton: FBLoginButton) {
        print("loginButtonDidLogOut")
    }

自定义按钮

    let login = LoginManager.init()
    login.logIn(permissions: ["public_profile", "email"], from: self) { (result, error) in

    }

你可能感兴趣的:(iOS 第三方登录 之 FaceBook 登录(OC + Swift))