Die OAuth-basierte App-Flip-Verknüpfung (App Flip) öffnet Ihre iOS-App über eine Google-App, damit der Google-App-Benutzer sein Konto einfacher verknüpfen kann. Sie müssen kleinere Codeänderungen an Ihrer iOS-App vornehmen, um diese Funktion zu implementieren.
In diesem Dokument erfahren Sie, wie Sie Ihre iOS-App so ändern, dass sie App Flip unterstützt.
Probieren Sie die Probe aus
Die App Flip Beispielanwendung zeigt ein Konto verknüpfen Integration auf iOS , die App - Flip-kompatibel. Mit dieser App können Sie überprüfen, wie Sie auf einen eingehenden universellen App Flip-Link von mobilen Google-Apps reagieren.
Die Beispielanwendung ist so vorkonfiguriert , mit der Integration App Flip - Test - Tool für iOS , mit denen Sie Ihrem iOS - App-Integration in App Flip verwenden können , um zu überprüfen , bevor Sie configure mit Google - Konto verknüpfen. Diese App simuliert den universellen Link, der von mobilen Google-Apps ausgelöst wird, wenn App Flip aktiviert ist.
Wie es funktioniert
Im Folgenden sind die Ablaufschritte aufgeführt, die die Google App und Ihre App ausführen, wenn App Flip auftritt:
Die Google App versucht, den universellen Link Ihrer App zu öffnen. Es kann Ihre App öffnen, wenn sie auf dem Gerät des Benutzers installiert und mit dem universellen Link verknüpft ist. Siehe Unterstützung Universal - Verbindungen für weitere Einzelheiten.
Ihre Anwendung überprüft, ob die
client_id
undredirect_uri
Parameter codiert in der eingehenden URL entspricht die erwartete Google Universal-Link.Ihre App fordert einen Autorisierungscode von Ihrem OAuth2-Server an. Am Ende dieses Ablaufs gibt Ihre App entweder einen Autorisierungscode oder einen Fehler an die Google-App zurück. Dazu öffnet es den universellen Link von Google mit angehängten Parametern für den Autorisierungscode oder Fehler.
Die Google-App verarbeitet den eingehenden universellen Google-Link und fährt mit dem Rest des Flusses fort. Bei Angabe eines Autorisierungscodes wird die Verknüpfung sofort abgeschlossen. Der Token-Austausch erfolgt von Server zu Server, genauso wie beim browserbasierten OAuth-Verknüpfungsfluss. Wenn ein Fehlercode zurückgegeben wird, wird der Verknüpfungsablauf mit den alternativen Optionen fortgesetzt.
Ändern Sie Ihre iOS-App, um App Flip zu unterstützen
Um App Flip zu unterstützen, nehmen Sie die folgenden Codeänderungen an Ihrer iOS-App vor:
- Griff
NSUserActivityTypeBrowsingWeb
in AppDelegate. - Capture
redirect_uri
undstate
aus der URL später zu verwenden. - Überprüfen Sie, ob
redirect_uri
Matches dieses Format:https://oauth-redirect.googleusercontent.com/a/GOOGLE_APP_BUNDLE_ID https://oauth-redirect-sandbox.googleusercontent.com/a/GOOGLE_APP_BUNDLE_ID
Stellen Sie sicher, dass die Client-ID mit dem erwarteten Wert übereinstimmt. Verwenden Sie das folgende Codebeispiel:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL, let components = URLComponents(url: incomingURL, resolvingAgainstBaseURL: false), let params = components.queryItems else { return false } if let clientId = params.filter({$0.name == "client_id"}).first?.value, let state = params.filter({$0.name == "state"}).first?.value, let redirectUri = params.filter({$0.name == "redirect_uri"}).first?.value { // Save the redirect_uri and state for later... // Verify the client id return (clientId == GOOGLE_CLIENT_ID) } else { // Missing required parameters return false } }
Rufen Sie nach erfolgreicher Autorisierung den Umleitungs-URI mit dem Autorisierungscode auf. Verwenden Sie das folgende Codebeispiel:
func returnAuthCode(code: String, state: String, redirectUri: String) { var redirectURL = URL(string: redirectUri) var components = URLComponents(url: redirectURL, resolvingAgainstBaseURL: false) // Return the authorization code and original state let paramAuthCode = URLQueryItem(name: "code", value: code) let paramState = URLQueryItem(name: "state", value: state) components?.queryItems = [paramAuthCode, paramState] if let resultURL = components?.url { UIApplication.shared.open( resultURL, options: [UIApplicationOpenURLOptionUniversalLinksOnly : true], completionHandler: nil) } }
Wenn ein Fehler aufgetreten ist, hängen Sie stattdessen ein Fehlerergebnis an den Umleitungs-URI an. Verwenden Sie das folgende Codebeispiel:
func returnError(redirectUri: String) { var redirectURL = URL(string: redirectUri) var components = URLComponents(url: redirectURL, resolvingAgainstBaseURL: false) // Return the authorization code and original state let paramError = URLQueryItem(name: "error", value: "invalid_request") let paramDescription = URLQueryItem(name: "error_description", value: "Invalid Request") components?.queryItems = [paramError, paramDescription] if let resultURL = components?.url { UIApplication.shared.open( resultURL, options: [UIApplicationOpenURLOptionUniversalLinksOnly : true], completionHandler: nil) } }
Abfrageparameter für den universellen Link Ihrer App
Wenn der universelle Link Ihrer App von der Google-App geöffnet wird, enthält er die folgenden Abfrageparameter:
-
client_id
(String
): Googleclient_id
, die unter Ihrer App registriert ist. -
scope
(List of String
): Eine Liste von durch Leerzeichen getrennte Bereiche angefordert. -
state
(String
): Ein Nonce von Google verwendet , um zu überprüfen , dass das Genehmigungsergebnis in Reaktion auf Googles abgehende Anforderung ist. -
redirect_uri
(String
): Googles Universal-Link. Der "Flip"-URI zum Öffnen der Google-App und zum Weitergeben der Ergebnisse.
Abfrageparameter für den universellen Link von Google
Parameter, die verwendet werden, wenn das Autorisierungsergebnis erfolgreich zurückgegeben wird:
-
code
(String
): Der Wert des Autorisierungscodes, falls vorhanden. -
state
(String
): Der genaue Wert aus der eingehenden Universal-Verbindung empfangen.
Parameter, die verwendet werden, wenn das Autorisierungsergebnis nicht erfolgreich zurückgegeben wird:
error
(String
), mit den folgenden Werten:-
cancelled
: behebbarer Fehler. Die Google App versucht, das Konto mithilfe der Autorisierungs-URL zu verknüpfen. Einige Beispiele sind, dass sich der Benutzer nicht anmelden kann, ein Gerät offline ist oder eine Zeitüberschreitung der Verbindung. -
unrecoverable
: Ein nicht behebbarer Fehler. Der Benutzer versucht beispielsweise, eine Verknüpfung mit einem deaktivierten Konto herzustellen. Die Google App bricht die Kontoverknüpfung ab. -
invalid_request
: Die Anfrage sind Parameter ungültig sind oder fehlen. Dies ist ein behebbarer Fehler. Die Google App versucht, das Konto mithilfe der Autorisierungs-URL zu verknüpfen. -
access_denied
: Der Benutzer lehnt die Zustimmung Anfrage. Dies ist ein nicht behebbarer Fehler; die Google-App bricht die Verknüpfung ab.
-
error_description
(String
, optional): Eine benutzerfreundliche Fehlermeldung.
Für alle Fehlertypen, müssen Sie die Antwortdaten an dem angegebenen Rück REDIRECT_URI
der geeignete Rückfall wird trigerred zu gewährleisten.
Ändern Sie Ihren Autorisierungsendpunkt, um App Flip zu unterstützen
Konfigurieren Sie Ihre Plattform so, dass Anfragen über die App Flip-Weiterleitungs-URLs von Google akzeptiert werden:
- Google - Startseite App
https://oauth-redirect.googleusercontent.com/a/com.google.Chromecast.dev https://oauth-redirect.googleusercontent.com/a/com.google.Chromecast.enterprise https://oauth-redirect.googleusercontent.com/a/com.google.Chromecast https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.Chromecast.dev https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.Chromecast.enterprise https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.Chromecast
- Google - Assistent App
https://oauth-redirect.googleusercontent.com/a/com.google.OPA.dev https://oauth-redirect.googleusercontent.com/a/com.google.OPA.enterprise https://oauth-redirect.googleusercontent.com/a/com.google.OPA https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.OPA.dev https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.OPA.enterprise https://oauth-redirect-sandbox.googleusercontent.com/a/com.google.OPA
Überprüfen Sie, ob client_id
und die angegebene URL durch den redirect_uri
Parameter die erwarteten Werten übereinstimmen , wenn eine Anforderung empfangen wird. wenn die Client - Überprüfung fehlschlägt, geben Sie den Fehler invalid_request
zum redirect_uri
.