在SwiftUI中显示Google登录屏幕

问题描述 投票:0回答:1

我正在玩Google登录屏幕和swiftUI,但是我的日志中经常收到一堆我不太了解的消息-现在我可以使用这些日志了,但是我遇到的问题是我不能多次调用同一个函数...

import SwiftUI
import GoogleSignIn

class GoogleStuff: UIViewController, GIDSignInDelegate, ObservableObject {

    var googleSignIn = GIDSignIn.sharedInstance()
    var googleId = ""
    var googleIdToken = ""
    var googleFirstName = ""
    var googleLastName = ""
    var googleEmail = ""
    var googleProfileURL = ""

    func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {

        guard user != nil else {
            print("Uh oh. The user cancelled the Google login.")
            return
        }

        print("TOKEN => \(user.authentication.idToken!)")


    }

    func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!) {

        guard user != nil else {
            print("Uh oh. The user cancelled the Google login.")
            return
        }

        print("TOKEN => \(user.authentication.idToken!)")

    }
}

struct ContentView: View {

    let googleSignIn = GIDSignIn.sharedInstance()

    @ObservedObject var myGoogle = GoogleStuff()

    @State private var signedIn = false
    @State private var buttonLabel = "Google Sign In"

    var body: some View {
        VStack {

            Button(action: {
                self.signedIn.toggle()
                self.buttonLabel = self.signedIn ? "Google Sign In" : "Google Sign Out"

                self.googleSignIn?.presentingViewController = UIApplication.shared.windows.last?.rootViewController
                self.googleSignIn?.clientID = "MY_TOKEN_GOES_HERE" //It is just a playground for now
                self.googleSignIn?.delegate = self.myGoogle
                self.googleSignIn?.signIn()
            }) {
                HStack {
                    Image("GLogo")
                        .resizable()
                        .frame(width: 40, height: 40, alignment: .center)
                    Text(buttonLabel)
                    .foregroundColor(.blue)
                    .font(.title)
                    .font(.custom("Roboto-Thin", size: 20))
                }
                .padding()
                .border(Color.black, width: 3)
            }
        }
    }
}

我收到的错误消息是:

2020-01-03 10:25:14.490522 + 1300 gsignin [34333:10734362] [AXRuntimeCommon]此类'SwiftUI.AccessibilityNode'不是已知的可序列化元素,将其作为可访问性元素返回可能会导致崩溃]]

2020-01-03 10:25:14.789926 + 1300 gsignin [34333:10734511] [AXRuntimeCommon]未知客户端:gsignin

2020-01-03 10:25:16.539753 + 1300 gsignin [34333:10734362]键盘无法显示视图控制器(试图显示<SFAuthenticationViewController: 0x7f8a8a842200>

问题1:

我应该对此予以关注:[AXRuntimeCommon] Unknown client: gsignin

问题2:

收到此消息后,首次出现登录屏幕,但此后没有任何时间... Keyboard cannot present view controllers (attempted to present <SFAuthenticationViewController: 0x7f8a8a842200>)

如何解决这些消息?此刻我什么都没得到。

PS。我不介意做更多的阅读/研究,但是请保持友善-我是新手:-D

我正在使用Google登录屏幕和swiftUI,但是我的日志中不断收到一堆我不太了解的消息-现在我可以使用这些日志了,但是问题是...

ios swift swiftui google-authentication
1个回答
1
投票

我真的希望有人能告诉我我对此有误,但SwiftUI尚不支持您编写的Google登录代码类型。因此,要使其工作,请使用以下结构:

© www.soinside.com 2019 - 2024. All rights reserved.