首页 > 解决方案 > 无法调用非函数类型“GIDSignIn”的值

问题描述

我正在尝试在我的应用中实现谷歌登录。但问题是当我将这行代码添加到我的 App.swift 文件时,我遇到了一个错误。我试图从中删除,()sharedInstance如果我这样做,我会收到另一个错误(Value of type 'GIDSignIn' has no member 'clientID')。我是 swift 和 swiftUI 的初学者

错误:

Cannot call value of non-function type 'GIDSignIn'

代码行:

GIDSignIn.sharedInstance.clientID = FirebaseApp.app()?.options.clientID

我的 App.swift 文件:

//
//  iGrow_GoalsApp.swift
//  iGrow Goals
//
//  Created by George Sepetadelis on 3/8/21.
//

import SwiftUI
import Firebase
import FirebaseAuth
import GoogleSignIn
import UserNotifications


@main
struct iGrow_GoalsApp: App {
    
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    
    var body: some Scene {
        WindowGroup {
            let viewModel = AppViewModel()
            ContentView()
                .environmentObject(viewModel)
        }
    }
    
}

extension iGrow_GoalsApp {
    
    func setUpAthetication() {
        FirebaseApp.configure()
    }
    
}

class AppDelegate : NSObject, UIApplicationDelegate {
    
    var window: UIWindow?
    
    func application(
        _ app: UIApplication,
        open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]
    ) -> Bool {
        var handled: Bool
        
        handled = GIDSignIn.sharedInstance.handle(url)
        if handled {
            return true
        }
        
        // Handle other custom URL types.
        
        // If not handled by this app, return false.
        return false
    }
    
    
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        
        window = UIWindow(frame: UIScreen.main.bounds)
        
        FirebaseApp.configure()
        
        GIDSignIn.sharedInstance.clientID = FirebaseApp.app()?.options.clientID
        
        return true
    }
    
    
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        
        (UIApplication.shared.delegate as? AppDelegate)?.self.window = window
        
        guard let _ = (scene as? UIWindowScene) else { return }
        
    }
    
}

标签: iosswiftfirebase-authentication

解决方案


推荐阅读