App Flip pour iOS

Une fois que vous disposez d'une implémentation OAuth 2.0, vous pouvez éventuellement configurer l'App Flip basé sur OAuth, qui permet à vos utilisateurs iOS d'associer plus rapidement leurs comptes de votre système d'authentification à leurs comptes Google. Les sections suivantes expliquent comment concevoir et implémenter App Flip pour votre intégration Cloud-to-cloud sur iOS.

Principes de conception

Cette section décrit les exigences et les recommandations de conception pour l'écran de consentement à l'association de compte App Flip. Une fois que Google a appelé votre application, celle-ci affiche l'écran de consentement à l'utilisateur.

Conditions requises

  1. Vous devez inclure une déclaration d'autorisation Google, par exemple "Une fois associé, Google sera autorisé à contrôler vos appareils."
  2. Vous devez indiquer que le compte de l'utilisateur est associé à Google, et non à un produit Google spécifique, tel que Google Home ou l'Assistant Google.
  3. Vous devez indiquer une incitation à l'action claire sur votre écran de consentement et utiliser la formulation "Accepter et associer" pour l'action d'association. En effet, les utilisateurs doivent comprendre quelles données ils doivent partager avec Google pour associer leurs comptes.
  4. Vous devez permettre aux utilisateurs de revenir en arrière, de refuser ou d'annuler s'ils choisissent de ne pas associer leur compte. Utilisez le terme "Annuler" pour l'action d'annulation.
  5. Vous devez implémenter ce workflow : après avoir cliqué sur "Accepter et associer", vous devez indiquer que l'association a réussi et rediriger automatiquement l'utilisateur vers l'application Google Home. L'utilisateur devrait maintenant voir l'appareil associé dans l'application Google Home avec votre action. Après avoir cliqué sur "Annuler", vous devez rediriger l'utilisateur vers l'application Google Home.

Recommandations

Nous vous recommandons d'effectuer les opérations suivantes :

  1. Affichez les règles de confidentialité de Google. Incluez un lien vers les Règles de confidentialité de Google sur l'écran de consentement.

  2. Données à partager : Utilisez un langage clair et concis pour indiquer à l'utilisateur les données dont Google a besoin et pourquoi.

  3. Possibilité de dissocier le compte. Offrez aux utilisateurs un mécanisme pour dissocier leur compte, par exemple une URL vers les paramètres de leur compte sur votre plate-forme. Vous pouvez également inclure un lien vers le compte Google où les utilisateurs peuvent gérer leur compte associé.

  4. Possibilité de modifier le compte utilisateur Suggérez aux utilisateurs une méthode pour changer de compte. Cela est particulièrement utile si les utilisateurs ont tendance à posséder plusieurs comptes.

    • Si un utilisateur doit fermer l'écran d'autorisation pour changer de compte, envoyez une erreur récupérable à Google afin qu'il puisse se connecter au compte souhaité avec l'association OAuth et le flux implicite.
  5. Incluez votre logo. Affichez le logo de votre entreprise sur l'écran de consentement. Utilisez vos consignes de style pour placer votre logo. Si vous souhaitez également afficher le logo de Google, consultez Logos et marques déposées.

Cette figure montre un exemple d'écran de consentement avec des encadrés indiquant les exigences et recommandations individuelles à suivre lorsque vous concevez un écran de consentement utilisateur.
Figure 1 : Consignes de conception de l'écran d'autorisation pour l'association de comptes.

Configurer pour App Flip basé sur OAuth

Les sections suivantes décrivent les conditions préalables à l'utilisation d'App Flip basé sur OAuth et expliquent comment configurer votre projet App Flip dans la Google Home Developer Console.

Créer une intégration cloud-to-cloud et configurer un serveur OAuth 2.0

Avant de pouvoir configurer App Flip, vous devez effectuer les opérations suivantes :

Configurer App Flip dans la Developer Console

La section suivante explique comment configurer App Flip dans la Developer Console.

  1. Remplissez tous les champs sous Informations sur le client OAuth. (Si App Flip n'est pas compatible, OAuth standard est utilisé comme solution de secours.)
  2. Sous Utiliser votre application pour l'association du compte(facultatif), cochez Activer pour iOS.
  3. Remplissez le champ Lien universel. Pour en savoir plus sur les liens universels, consultez Autoriser les applications et les sites Web à créer des liens vers votre contenu.
  4. Si vous souhaitez configurer votre client, ajoutez des champs d'application et cliquez sur Ajouter un champ d'application sous Configurer votre client (facultatif).
  5. Cliquez sur Enregistrer.

Vous pouvez maintenant passer à la section suivante pour implémenter App Flip dans votre application iOS.

Implémenter App Flip dans vos applications natives

Pour implémenter App Flip, vous devez modifier le code d'autorisation de l'utilisateur dans votre application afin d'accepter un lien profond de Google.

L'association App Flip basée sur OAuth (App Flip) ouvre votre application iOS à partir d'une application Google pour aider l'utilisateur de l'application Google à associer son compte plus facilement. Pour implémenter cette fonctionnalité, vous devez apporter des modifications mineures au code de votre application iOS.

Dans ce document, vous allez apprendre à modifier votre application iOS pour qu'elle soit compatible avec App Flip.

Essayer l'exemple

L'application exemple App Flip illustre une intégration d'association de comptes sur iOS compatible avec App Flip. Vous pouvez l'utiliser pour vérifier comment répondre à un lien universel App Flip entrant provenant d'applications mobiles Google.

L'application exemple est préconfigurée pour s'intégrer à l'outil de test App Flip pour iOS, que vous pouvez utiliser pour vérifier l'intégration d'App Flip à votre application iOS avant de configurer l'association du compte à Google. Cette application simule le lien universel déclenché par les applications mobiles Google lorsque l'App Flip est activé.

Fonctionnement

Voici les étapes du flux que l'appli Google et votre application suivent lorsque la fonctionnalité App Flip est utilisée :

  1. L'appli Google tente d'ouvrir le lien universel de votre application. Il peut ouvrir votre application si elle est installée sur l'appareil de l'utilisateur et associée au lien universel. Pour en savoir plus, consultez Prendre en charge les liens universels.

  2. Votre application vérifie que les paramètres client_id et redirect_uri encodés dans l'URL entrante correspondent au lien universel Google attendu.

  3. Votre application demande un code d'autorisation à votre serveur OAuth2. À la fin de ce flux, votre application renvoie un code d'autorisation ou une erreur à l'application Google. Pour ce faire, elle ouvre le lien universel de Google avec les paramètres ajoutés pour le code d'autorisation ou l'erreur.

  4. L'appli Google gère le lien universel Google entrant et poursuit le reste du flux. Si un code d'autorisation est fourni, l'association est effectuée immédiatement. L'échange de jetons s'effectue de serveur à serveur, de la même manière que dans le flux d'association OAuth basé sur un navigateur. Si un code d'erreur est renvoyé, le flux d'association se poursuit avec les autres options.

Modifier votre application iOS pour qu'elle soit compatible avec App Flip

Pour prendre en charge App Flip, apportez les modifications suivantes au code de votre application iOS :

  1. Gérez NSUserActivityTypeBrowsingWeb dans le délégué de votre application.
  2. Capturez les paramètres redirect_uri et state de l'URL pour les utiliser ultérieurement.
  3. Vérifiez que redirect_uri correspond à ce format :
    https://oauth-redirect.googleusercontent.com/a/GOOGLE_APP_BUNDLE_ID
    https://oauth-redirect-sandbox.googleusercontent.com/a/GOOGLE_APP_BUNDLE_ID
  4. Vérifiez que l'ID client correspond à la valeur attendue. Utilisez l'exemple de code suivant :

    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
        }
    }
    
  5. Une fois l'autorisation accordée, appelez l'URI de redirection avec le code d'autorisation. Utilisez l'exemple de code suivant :

    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)
        }
    }
    
  6. Si une erreur s'est produite, associez un résultat d'erreur à l'URI de redirection. Utilisez l'exemple de code suivant :

    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)
        }
    }
    

Lorsqu'il est ouvert par l'appli Google, le lien universel de votre application inclut les paramètres de requête suivants :

  • client_id (String) : client_id Google enregistré sous votre application.
  • scope (List of String) : liste des champs d'application demandés, séparés par des espaces.
  • state (String) : nonce utilisé par Google pour vérifier que le résultat de l'autorisation est une réponse à la requête sortante de Google.
  • redirect_uri (String) : lien universel de Google. URI "flip" pour ouvrir l'appli Google et transmettre les résultats.

Paramètres utilisés lorsque le résultat de l'autorisation est renvoyé avec succès :

  • code (String) : valeur du code d'autorisation, si disponible.
  • state (String) : valeur exacte reçue du lien universel entrant.

Paramètres utilisés lorsque le résultat de l'autorisation est un échec :

  • error (String), avec les valeurs suivantes :

    • cancelled : erreur récupérable. L'appli Google tentera d'associer le compte à l'aide de l'URL d'autorisation. Par exemple, l'utilisateur ne parvient pas à se connecter, un appareil est hors connexion ou une connexion expire.
    • unrecoverable : erreur irrécupérable. Par exemple, l'utilisateur tente d'associer un compte désactivé.L'appli Google interrompt l'association du compte.
    • invalid_request : les paramètres de la requête sont non valides ou manquants. Cette erreur est récupérable. L'appli Google tentera d'associer le compte à l'aide de l'URL d'autorisation.
    • access_denied : l'utilisateur refuse la demande de consentement. Il s'agit d'une erreur non récupérable. L'appli Google interrompt l'association.
  • error_description (String, facultatif) : message d'erreur convivial.

Pour tous les types d'erreurs, vous devez renvoyer les données de réponse au REDIRECT_URI spécifié pour vous assurer que le remplacement approprié est déclenché.

Modifier votre point de terminaison d'autorisation pour qu'il soit compatible avec App Flip

Configurez votre plate-forme pour qu'elle accepte les requêtes à l'aide des URL de redirection App Flip de Google :

  • Application Google Home
    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
    
  • Application Assistant Google
    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
    

Pour Google Home app (GHA), l'association de compte pour la maison connectée utilise les URL de redirection com.google.Chromecast. Assurez-vous que votre serveur d'autorisation autorise ces URL de redirection.

Vérifiez que client_id et l'URL spécifiée par le paramètre redirect_uri correspondent aux valeurs attendues lorsqu'une requête est reçue. Si la validation du client échoue, renvoyez l'erreur invalid_request à redirect_uri.

Tester App Flip sur votre appareil

Maintenant que vous avez créé une intégration cloud-to-cloud et configuré App Flip dans la console et dans votre application, vous pouvez tester App Flip sur votre appareil mobile. Vous pouvez utiliser l'application Google Home pour tester App Flip.

Pour tester App Flip à partir de l'application Google Home, procédez comme suit :

  1. Accédez à la Developer Console et sélectionnez votre projet.
  2. Accédez à Cloud-to-cloud > Test.
  3. Déclenchez le flux d'association de compte depuis l'application Home :
    1. Ouvrez Google Home app (GHA).
    2. Cliquez sur le bouton +.
    3. Cliquez sur Configurer un appareil.
    4. Cliquez sur Vous avez déjà configuré des appareils ?.
    5. Sélectionnez votre intégration cloud-à-cloud dans la liste des fournisseurs. Il sera précédé de "[test]" dans la liste. Lorsque vous sélectionnez votre intégration [test] dans la liste, votre application doit s'ouvrir.
    6. Vérifiez que votre application a été lancée et commencez à tester votre flux d'autorisation.