在 SwiftUI 中实现 Firebase 身份验证时,Xcode 13 找不到 FacebookAppID [重复]
Posted
技术标签:
【中文标题】在 SwiftUI 中实现 Firebase 身份验证时,Xcode 13 找不到 FacebookAppID [重复]【英文标题】:Xcode 13 cannot find FacebookAppID when implementing Firebase auth in SwiftUI [duplicate] 【发布时间】:2021-10-30 23:50:53 【问题描述】:Xcode 13 的一个主要变化是info.plist
不再可见。根据 Facebook 的文档,我需要在info.plist
中添加以下内容:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fbAPP-ID</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>APP-ID</string>
<key>FacebookClientToken</key>
<string>CLIENT-TOKEN</string>
<key>FacebookDisplayName</key>
<string>APP-NAME</string>
我尝试在项目的Targets -> Info
设置下手动添加这些。
但是,每当我单击应用程序上的登录按钮时,都会出现运行时错误提示
Thread 1: "App ID not found. Add a string value with your app ID for the key FacebookAppID to the Info.plist or call [FBSDKSettings setAppID:]."
其他一切似乎都正常(我可以在我的屏幕上看到 Facebook 默认按钮)。
我的 Facebook 登录视图
import SwiftUI
import FacebookLogin
struct CoverView: View
@AppStorage("isLoggedIn") var isLoggedIn = false
@AppStorage("email") var email = ""
var body: some View
FBLog(isLoggedIn: $isLoggedIn, email: $email)
.frame(height: 50)
.padding(.horizontal, 35)
.clipShape(Capsule())
struct FBLog: UIViewRepresentable
func makeCoordinator() -> Coordinator
return FBLog.Coordinator(parent1: self)
@Binding var isLoggedIn: Bool
@Binding var email: String
func makeUIView(context: Context) -> FBLoginButton
let button = FBLoginButton()
button.delegate = context.coordinator
return button
func updateUIView(_ uiView: FBLoginButton, context: Context)
class Coordinator: NSObject, LoginButtonDelegate
var parent: FBLog
init(parent1: FBLog)
parent = parent1
func loginButton(_ loginButton: FBLoginButton, didCompleteWith result: LoginManagerLoginResult?, error: Error?)
if error != nil
print(error!.localizedDescription)
return
// check if user cancelled the flow.
if !result!.isCancelled
parent.isLoggedIn = true
let request = GraphRequest(graphpath: "me", parameters: ["fields": "email"])
request.start() [self] (_, res, _) in
guard let profileData = res as? [String: Any] else return
// save email
parent.email = profileData["email"] as! String
func loginButtonDidLogOut(_ loginButton: FBLoginButton)
// logging out
parent.isLoggedIn = false
parent.email = ""
问题
如何使用 Xcode 13 在 SwiftUI 中正确实现 Facebook 身份验证?
【问题讨论】:
【参考方案1】:刚刚找到一个适合我的答案:https://***.com/a/67900140/4784433
在 Xcode 12.5 中测试
制作一个 AppDelegate.swift 并在下面添加此代码。
import SwiftUI import FacebookCore class AppDelegate: NSObject, UIApplicationDelegate func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool return ApplicationDelegate.shared.application(app, open: url, options: options)
在你的@main App 文件中添加这一行
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
【讨论】:
以上是关于在 SwiftUI 中实现 Firebase 身份验证时,Xcode 13 找不到 FacebookAppID [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Firebase 身份验证中实现多用户帐户登录和切换?
如何在 MVVM-C RxSwift 中实现 firebase 身份验证
在firebase中实现电话和电子邮件身份验证的最佳方法是一次性使用?
可以在 Firebase 3 中实现自定义身份验证属性并将其与安全安全规则一起使用吗?