web-dev-qa-db-fra.com

Erreur Google 400: requête non valide Les URI de schéma personnalisé ne sont pas autorisés pour le type de client "Web"

Lorsque je me connecte à Gmail dans mon application iOS, j'obtiens l'erreur ci-dessous (capture d'écran) et les champs de connexion n'apparaissent pas. Nous chargeons l'écran de connexion dans un WKWebView.

  • Nous utilisons une redirection d'URI personnalisée, mais pourquoi Google lance-t-il cette erreur maintenant. Quelles sont les alternatives à un URI personnalisé?
  • Projet Swift 2.3
  • Utilisation du cocoapod OAuthSwift v0.6.0
  • Cela a commencé assez récemment, seulement la semaine dernière, donc je pense que quelque chose a changé avec les API de Google.

J'ai lu que Google déprécie les vues Web pour OAuth et bloquera les demandes le 20 avril 2017. Comme on le voit ici dans un blog des développeurs Google: https: //developers.googleblog. com/2016/08/modernizing-oauth-interactions-in-native-apps.html

Est-ce à dire que je dois déjà utiliser ou existe-t-il une autre solution viable? Je pensais avoir plus de temps avant de devoir mettre à jour cela.

enter image description here

26
Poke

Je suppose que votre client n'est pas enregistré correctement dans Google Cloud Console. Un client "WEB" est généralement un serveur ou une application Javascript. Une application iOS doit être enregistrée en tant que client iOS.

https://developers.google.com/identity/protocols/OAuth2InstalledApp#creatingcred

16
Nick

Je viens de trouver ce problème aussi.
Veuillez vérifier la console développeur de Google et consulter les clés des informations d'identification
Votre ID client dans google-info plist doit provenir de l'application iOS, pas du Web.
Et utilisez cet ID client pour être revereseClientID et copiez-le dans le type URI

11
teeosx

vous devez recouper clientId sur votre "Google Dashboard" clientId et clientId sur "GoogleProject.Plsit" .si les deux sont différents, copiez ClientID de "Google Dashboard" et collez-le sur "GoogleService-Info.Plsit" .et modifiez également votre reverseClientId dans "GoogleService-Info.Plsit" selon le ClientID nouvellement collé (vous vérifiez le modèle de création de reverseClientId à partir de l'ID client dans "GoogleService-Info.Plsit"). Et puis collez thid reverseClientId dans 'URL type' dans le paramètre de votre projet.

Dans le cas de mon clientId sur "GoogleService-Info.Plsit" et mon "Google Dashboard" étaient différents. chech votre tableau de bord google ici: https://console.developers.google.com/apis/credentials?project=firebase

3
Chandramani

Je viens de rencontrer ce problème suite au guide Google Signin pour iOS. Le fichier généré par plist n'est pas le bon. Vous devez jeter un œil à l'ID client et à l'ID client inversé et assurez-vous qu'ils sont bien ceux de l'application iOS sur votre portail de développeur Google.

2
Jean-Philippe

J'ai résolu les problèmes en créant un projet dans Fire Base Parce que REVERSED_CLIENT_ID génère à partir de developers.google.com Incorrect . Essayez de créer votre projet dans FireBase https://console.firebase.google.com

2
user3313585

J'ai rencontré cette erreur après avoir créé un fichier GoogleService-Info.plist En utilisant le site Connexion Googlevous dirige vers . J'ai ensuite commencé à utiliser Firebase, qui semble créer un fichier .plist Distinct. Après avoir tenté d'inclure le nouveau fichier .plist De Firebase, mon bouton de connexion Google a commencé à générer l'erreur invalid_request Avec le message Custom scheme URIs are not allowed for WEB client type.

Afin de résoudre le problème, j'ai essayé beaucoup de choses, mais à la fin la suppression de mon projet Firebase ENTIER sur leur console Web (pas seulement l'application individuelle), recréer un nouveau projet Firebase à partir de zéro et télécharger à nouveau le nouveau fichier .plist, a résolu l'erreur.

1
Daniel Smith

Il crée deux ID client. une pour le Web et une pour l'application iOS. Le client Web sera dans la liste de google par défaut. Cela donne donc l'erreur ci-dessus. Utilisez l'ID client iOS à partir de la console Google ou créez des informations d'identification pour l'application iOS.

1
Dimple

Pour mon expérience, j'avais suivi Google SignIn iOS Swift guide et j'avais téléchargé un Web OAuth fichier JSON. Ils vous fournissent littéralement le mauvais fichier Plist pour un iOS) installer.

Juste au cas où quelqu'un d'autre rencontrerait ce problème, voici les étapes que j'ai suivies:

  1. Accédez à la console Google Developers.
  2. Accédez à la section Informations d'identification.
  3. Notez qu'il existe deux éléments dans la section "ID client OAuth 2.0". (Si vous avez précédemment tenté de configurer un projet iOS Google SignIn.
  4. Cliquez sur le nom du "client iOS pour".
  5. Cliquez sur "Télécharger le fichier PLIST".
  6. Supprimez le fichier Google Web Plist de votre projet.
  7. Déposez le nouveau fichier Plist basé sur iOS.
  8. Copiez le nouveau REVERSED_CLIENT_ID dans vos types d'URL de la page d'informations de votre projet. (Ceci est détaillé dans le guide de Google).
  9. Essayez de réexécuter votre application.

Remarque: J'ai obtenu l'API de connexion Google pour fonctionner avec Swift v3 et XCode v8.

1
Speakeasys

J'obtenais la même erreur. Ensuite, j'ai compris que je n'avais pas fourni mon identifiant de bundle d'application pour accéder au service de connexion Google dans mon application. Vous faites cela à partir de la page avec le lien:

https://developers.google.com/mobile/add?platform=ios&cntapi=signin&cnturl=https:%2F%2Fdevelopers.google.com%2Fidentity%2Fsign-in%2Fios%2Fsign-in%3Fconfigured%3Dtrue&cntlbl = Continuer% 20Ajout% 20Se connecter

Connectez-vous avec votre compte de développeur Google.

2.Créez le nom de votre application et copiez l'ID de l'ensemble d'applications à partir de votre projet à partir de: Liste des projets et des cibles> Général> Identifiant de l'ensemble.

3.Choisissez votre pays

4.Activez la connexion à Google.

Effectuez ensuite les étapes nécessaires pour intégrer Google Sign In à votre application iOS.

0
Nupur Sharma

J'étais confronté au même problème. J'ai suivi toutes les instructions pour intégrer mon application plusieurs fois et j'ai joué avec le code pour voir s'il y avait un problème caché dans le code. J'ai téléchargé et configuré l'exemple d'application de google sur github https://github.com/googlesamples/google-services et je rencontre le même problème, donc ce n'était pas le code.

Il semblait qu'il y ait quelque chose dans la configuration de ma console, j'ai donc basculé entre différentes applications de console Google et joué à changer les ID de l'ensemble.

La seule chose qui a réussi à résoudre ce problème était d'utiliser Firebase à la place. J'ai créé une application dans la console Firebase, téléchargé le nouveau plist et cela a fonctionné.

Je ne sais toujours pas pourquoi cela n'a pas fonctionné pour moi en premier lieu, cela ne semble pas être un problème commun, mais j'espère que cela aide quelqu'un. à votre santé,

0
Daniel Salas

Veuillez vérifier console.developers.google.com/apis/credentials pour votre projet et voir s'il y a déjà un client_id dans la section OAuth 2.0 ID client, si oui, copiez cet ID client et remplacez-le avec vous CLIENT_ID du fichier GoogleService-Info.plist et modifiez en conséquence REVERSED_CLIENT_ID (de manière inverse) maintenant nettoyez et créez votre application et testez qu'elle fonctionnera

0
Raj Oriya