Wprowadzam logowanie Google do mojej aplikacji i chociaż zarówno dokumentacja Google, jak i Firebase jest wystarczająco dokładna, to co zrobiłem zgodnie z sugestią, nie jest wystarczające .. Nadal dostaję ten błąd. Mam nadzieję, że to pomoże innym w znalezieniu rozwiązania problemu przy wdrażaniu ich SDK .... Dzięki z góry za przegląd ten masywny jedno:Logowanie przez Google za pomocą Firebase: GIDSignInDelegate nie jest zgodny z ViewController
Oto Firebase guide i Google guide:
Więc
- Dodany Google podfile - SPRAWDŹ
- Adde d linia do Bridging-Header - SPRAWDŹ
- Dodany GoogleService-Info.plist & identyfikator pakietu & odwrócone ID klienta do schematów URL - Sprawdź
App Delegat ma następującą, bez błędów ale zauważam, że mogą wystąpić konflikty między logowaniem się na Facebooku (działa poprawnie) a nowymi Googleami, z którymi nie mam pojęcia jak sobie poradzić:
P.S. jeszcze nie dodałem GIDSignInDelegate do AppDelegate tutaj, ponieważ mam zamiar do mojej VC do obsługi logiki logowania, jak widać poniżej ...
LoginVC ViewController kod tutaj:
class LoginVC: UIViewController, UIViewControllerTransitioningDelegate, UITextViewDelegate, UITextFieldDelegate, GIDSignInDelegate, GIDSignInUIDelegate { override func viewDidLoad() { super.viewDidLoad() let ref = Firebase(url: "https://MYAPPID.firebaseio.com") GIDDSignIn.sharedInstance().delegate = self GIDSignIn.sharedInstance().uiDelegate = self GIDSignIn.sharedInstance().signInSilently() // for if the user has recently been authenticated }
Wtedy ten, który z tego co widzę ... powinno być wszystko, Google musi rozmawiać Firebase:
// Implementing the required GIDSignInDelegate methods
func googleSignIn(signIn: GIDSignIn!, didSignInForUser user: GIDGoogleUser!, withError error: NSError!) {
if (error == nil) {
// Auth with Firebase
let userId = user.userID
let idToken = user.authentication.idToken
let fullName = user.profile.name
let givenName = user.profile.givenName
let familyName = user.profile.familyName
let email = user.profile.email
ref.authWithOAuthProvider("google", token: user.authentication.accessToken, withCompletionBlock: { (error, authData) in
// User is logged in!
})
} else {
print("\(error.localizedDescription)")
}
}
func googleSignOut() {
GIDSignIn.sharedInstance().signOut()
ref.unauth()
}
// Implement the required GIDSignInDelegate methods and Unauth when disconnected from Google
func signIn(signIn: GIDSignIn!, didDisconnectWithUser user:GIDGoogleUser!, withError error: NSError!) {
ref.unauth()
}
// IBAction to handle the sign-in process
@IBAction func googleButtonPressed(sender: TKTransitionSubmitButton!) {
GIDSignIn.sharedInstance().signIn()
}
Baffled? Przepraszam za długich facetów ... ale zrobiłem wszystko, co sugeruje poradnik Firebase, a to oznacza, że logika w dokumencie Google dla AppDelegate jest tam w ProfilVC. Jakieś wskazówki?
Uczę się programowania iOS i właśnie dostałem znak Google działa dzisiaj. Zgaduję, że to jest problem z GISSignInDelegate, chociaż powiedziałeś, że się tym zajmujesz. Moja sugestia to zacząć od czystego projektu, postępuj zgodnie z tutorialem w google dosłownie, dopóki go nie uruchomisz, wtedy możesz zmienić wszystko, co tylko chcesz –
Tak, od czasu, gdy udało mi się pracować z nową bazą firewall, dzięki! –
Ten sam problem podczas aktualizacji do szybkiego 3. –