Sto introducendo l'accesso di Google alla mia app e sebbene sia la documentazione di Google sia quella di Firebase siano sufficientemente approfondite, ciò che ho fatto come suggerito non è sufficiente .. . Sto ancora ricevendo questo errore Speriamo che questo aiuterà gli altri a trovare una soluzione al problema in sede di attuazione il loro SDK .... grazie in anticipo per la revisione di questo grosso uno:Accesso a Google tramite Firebase: GIDSignInDelegate non è conforme a ViewController
Ecco il Firebase guide e la Google guide:
Così
- Aggiunto Google per podfile - CHECK
- Adde linea D in Colmare-Header - Mostra
- Aggiunto GoogleService-Info.plist & identificativo fascio & invertito ID cliente a schemi URL - Controllare
App Delegato ha la seguente, senza errori ma noto che potrebbero esserci conflitti tra il login di Facebook (funzionante correttamente) e Google, che non ho idea di come gestire insieme:
P.S. Non ho aggiunto GIDSignInDelegate a AppDelegate qui perché sto progettando per il mio VC per gestire la logica di accesso, come si vedrà in seguito ...
LoginVC ViewController codice qui:
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 }
Allora questo, che da quello che posso vedere ... dovrebbe essere tutto Google ha bisogno di parlare con 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()
}
sconcertato? Ci scusiamo per il lungo ragazzi ... ma ho fatto tutto ciò che la guida di Firebase suggerisce e ciò significa che la logica del doc di Google per AppDelegate è tutta lì nel ProfileVC. Qualche indicazione?
Sto imparando iOS programmando me stesso e ho appena ricevuto il segnale di google che funziona oggi. La mia ipotesi è che questo è un problema con GISSignInDelegate anche se hai detto che ti sei preso cura di esso. Il mio suggerimento è di iniziare con un progetto pulito, seguire il tutorial su google letteralmente fino a farlo funzionare, quindi è possibile modificare tutto ciò che si desidera –
Sì, da quando ha funzionato con il nuovo firebase, grazie! –
Lo stesso problema durante l'aggiornamento a swift 3. –