无法让Google登录以处理网址

DAM*_*ENT 5 ios swift google-signin

我似乎可以理解问题,并且也收到错误“使用未声明的类型“ GIDSignInUIDelegate”

我尝试重新安装Pod,在Pod文件中包含了所有需要的Pod,包括“ GoogleSignIn”

我似乎也找不到关于Extra参数的任何在线信息。

import UIKit
import Firebase
import GoogleSignIn

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()
        GIDSignIn.sharedInstance().clientID = FirebaseApp.app()?.options.clientID

        window = UIWindow()
        window?.makeKeyAndVisible()
        let navController = UINavigationController(rootViewController: HomeController())
        navController.navigationBar.barStyle = .black
        window?.rootViewController = navController

        return true
    }

    func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any])
        -> Bool {
            return GIDSignIn.sharedInstance().handle(url,
                                                     sourceApplication:options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
                                                     annotation: [:])
    }
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

额外参数'sourceApplication'

在通话中:

func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any])
    -> Bool {
        return GIDSignIn.sharedInstance().handle(url,
                                                 sourceApplication:options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
                                                 annotation: [:])
}
Run Code Online (Sandbox Code Playgroud)

efr*_*dze 8

您可能正在使用GIDSignIn v5.0.0。他们对handle()参数进行了一些更改。

@available(iOS 9.0, *)
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool {
  return GIDSignIn.sharedInstance().handle(url)
}
Run Code Online (Sandbox Code Playgroud)

https://developers.google.com/identity/sign-in/ios/sign-in?ver=swift https://developers.google.com/identity/sign-in/ios/release


Muv*_*otv 6

我似乎可以理解问题,并且也收到错误“使用未声明的类型“ GIDSignInUIDelegate”

2019-08-14-v5.0.0

对GIDSignIn的更改:uiDelegate已替换为presentingViewController。

需要GIDSignInUIDelegate才能将自己分配给uiDelegate。

由于对presentingViewController进行了更改,因此您可以直接分配self,不再需要委托,因此他们将其删除。

GIDSignIn.sharedInstance()?.uiDelegate = self 
Run Code Online (Sandbox Code Playgroud)

就是现在

GIDSignIn.sharedInstance()?.presentingViewController = self
Run Code Online (Sandbox Code Playgroud)

正如@efremidze在他的回复中指出的那样,

GIDSignIn.sharedInstance().handle(url, sourceApplication:options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String, annotation: [:])
Run Code Online (Sandbox Code Playgroud)

现在只是

GIDSignIn.sharedInstance().handle(url)
Run Code Online (Sandbox Code Playgroud)


iMo*_*Nya 5

根据Google登录发行说明

2019-08-14-v5.0.0

Changes to GIDSignIn:
uiDelegate has been replaced with presentingViewController.
Run Code Online (Sandbox Code Playgroud)

要纠正错误:

1.全部替换

GIDSignIn.sharedInstance().uiDelegate = yourDelegate
Run Code Online (Sandbox Code Playgroud)

GIDSignIn.sharedInstance().presentingViewController = yourDelegate
Run Code Online (Sandbox Code Playgroud)

2.删除所有与GIDSignInUIDelegate的一致性。