You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS集成Facebook登录疑问:仅有AppDelegate.swift如何适配步骤5代码

解决Swift项目中Facebook登录的AppDelegate代码转换问题

嘿,我完全懂你现在的处境——Facebook开发者官网给的是Objective-C版本的AppDelegate代码示例,但你的项目用的是Swift写的AppDelegate.swift,别慌,我把对应的Swift代码给你整理好了,直接对应添加就行:

首先先把官网给出的Objective-C代码片段(你提到的部分)补全并引用出来,方便对照:

官网提供的Objective-C示例代码:

// AppDelegate.m
#import <FBSDKCoreKit/FBSDKCoreKit.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
    // 其他项目初始化代码
    return YES;
}

// 处理URL跳转的回调方法
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application openURL:url options:options];
    // 若有其他第三方登录的URL处理,可在此补充
    return handled;
}

对应的Swift版本代码(适配AppDelegate.swift)

  1. 先导入Facebook核心框架
    在AppDelegate.swift文件的最顶部添加:
import FBSDKCoreKit
  1. 在应用启动方法中添加Facebook初始化逻辑
    找到application(_:didFinishLaunchingWithOptions:)方法,插入Facebook的初始化代码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // 初始化Facebook SDK
    ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
    
    // 你的其他应用初始化代码保持不变
    return true
}
  1. 添加URL跳转的回调处理
    在AppDelegate.swift中添加这个方法,用来处理Facebook登录后的URL跳转:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    let handled = ApplicationDelegate.shared.application(app, open: url, options: options)
    // 如果还有其他第三方服务的URL需要处理,可在这里添加对应逻辑
    return handled
}

额外注意(针对iOS 13+使用SceneDelegate的项目)

如果你的项目是iOS 13及以上,并且使用了SceneDelegate,还需要在SceneDelegate.swift中添加对应的URL处理逻辑:

import FBSDKCoreKit

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else { return }
    _ = ApplicationDelegate.shared.application(
        UIApplication.shared,
        open: url,
        sourceApplication: nil,
        annotation: [UIApplication.OpenURLOptionsKey.annotation]
    )
}

这样就能完美替代官网给出的Objective-C代码,完成Facebook登录的集成步骤啦!

内容的提问来源于stack exchange,提问作者Tommy Jackson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:24:03