web-dev-qa-db-ja.com

Google 400エラー:無効なリクエストカスタムスキームURIは「Web」クライアントタイプには許可されていません

IOSアプリでGmailにサインインすると、次のエラー(スクリーンショット)が表示され、サインインフィールドが表示されません。サインイン画面をWKWebViewに読み込んでいます。

  • カスタムURIリダイレクトを使用していますが、なぜ今Googleはこのエラーをスローしていますか。カスタムURIの代替手段は何ですか?
  • Swift 2.3プロジェクト
  • OAuthSwift v0.6.0 cocoapodの使用
  • これはごく最近になって1週間ほどで始まったので、GoogleのAPIで何かが変わったと思います。

GoogleはOAuthのウェブビューを廃止し、2017年4月20日にリクエストをブロックします。GoogleDevelopersブログで見られるように: https://developers.googleblog。 com/2016/08/modernizing-oauth-interactions-in-native-apps.html

これは、すでに使用する必要があるということですか、それとも別の実行可能なソリューションがありますか?これを更新する必要がある前にもっと時間があったと思いました。

enter image description here

26
Poke

私の推測では、クライアントはGoogle Cloud Consoleに正しく登録されていません。 「WEB」クライアントは通常、サーバーまたはJavascriptアプリケーションです。 iOSアプリはiOSクライアントとして登録する必要があります。

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

16
Nick

私もこの問題を見つけました。
Google開発者コンソールを確認し、資格情報キーを確認してください
google-info plistのクライアントIDは、WebではなくiOSアプリケーションから取得する必要があります。
そのクライアントIDを使用してrevereseClientIDにし、それをURIタイプにコピーします

11
teeosx

「Googleダッシュボード」のclientIdと「GoogleProject.Plsit」のclientIdをクロスチェックする必要があります。両方が異なる場合は、「Googleダッシュボード」からClientIDをコピーして「GoogleService-Info.Plsit」に貼り付け、reverseClientIdを修正します。新しく貼り付けられたClientIDに従って「GoogleService-Info.Plsit」で(「GoogleService-Info.Plsit」のクライアントIDからreverseClientIdが作成されたパターンを確認します)。そして、プロジェクト設定の「URL type」にreverseClientIdを貼り付けます。

私の場合、「GoogleService-Info.Plsit」のclientIdと「Google Dashboard」は異なっていました。ここでGoogleダッシュボードをチェックしてください: https://console.developers.google.com/apis/credentials?project=firebase

3
Chandramani

IOS向けGoogleサインインガイドに従ってこの問題が発生しました。 plistで生成されたファイルは適切ではありません。 clientIDとreversedClientIDを確認し、それらがGoogle開発者ポータルのiOSアプリのものであることを確認する必要があります。

2
Jean-Philippe

REVERSED_CLIENT_IDはdevelopers.google.comIncorrectから生成されるため、Fire Baseでプロジェクトを作成して問題を解決しました。 FireBaseでプロジェクトを作成してみてください https://console.firebase.google.com

2
user3313585

以前にサイトを使用してGoogleService-Info.plistファイルを作成した後、このエラーに直面しました Googleサインインリダイレクト先 。後でFirebaseを使い始めました。Firebaseは別の.plistファイルを作成するようです。 Firebaseの新しい.plistファイルを含めようとした後、Googleサインインボタンでinvalid_requestメッセージとともにCustom scheme URIs are not allowed for WEB client typeエラーが発生し始めました。

この問題を解決するために多くのことを試しましたが、最終的にFirebaseプロジェクトを(個々のアプリだけでなく)Webコンソールで削除し、新しいFirebaseプロジェクトをゼロから再作成し、新しい.plistファイルを再ダウンロードすることでエラーを解決しました。

1
Daniel Smith

2つのクライアントIDを作成します。 1つはWeb用、もう1つはiOSアプリケーション用です。 Webクライアントはデフォルトでgoogle plistに含まれます。したがって、上記のエラーが発生します。 GoogleコンソールからiOSクライアントIDを使用するか、iOSアプリケーションの資格情報を作成します。

1
Dimple

私の経験では、GoogleのSignIn iOS Swiftガイドに従い、Web OAuth JSONファイルをダウンロードしました。文字通り、iOS用の間違ったPlistファイルを提供しました。セットアップ。

他の誰かがこの問題に遭遇した場合に備えて、私が従った手順は次のとおりです。

  1. Google Developers Consoleにアクセスします。
  2. 資格情報セクションに移動します。
  3. 「OAuth 2.0クライアントID」セクションには2つの項目があることに注意してください。 (以前にiOS Google SignInプロジェクトを構成しようとした場合。
  4. 「iOSクライアント」の名前をクリックします。
  5. [PLISTファイルのダウンロード]をクリックします。
  6. プロジェクトからGoogle web Plistファイルを削除します。
  7. 新しいiOSベースのPlistファイルをドロップします。
  8. 新しいREVERSED_CLIENT_IDをプロジェクトの情報ページのURLタイプにコピーします。 (これは、Googleのガイドで詳しく説明されています)。
  9. アプリを再度実行してみてください。

注:Swift v3およびXCode v8で動作するGoogleサインインAPIを取得しました。

1
Speakeasys

同じエラーが発生していました。次に、アプリのGoogleサインインサービスにアクセスするためのアプリバンドルIDを提供しなかったことがわかりました。リンクのあるページからそれを行います:

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 = Continue%20Adding%20Sign-In

1.Google Developerアカウントでサインインします。

2.アプリ名を作成し、プロジェクトからアプリバンドルIDをコピーします:プロジェクトとターゲットリスト>一般>バンドル識別子。

3.国を選択してください

4.Googleサインインを有効にします。

次に、必要な手順を実行して、GoogleサインインをiOSアプリに統合します。

0
Nupur Sharma

私は同じ問題に直面していました。すべての指示に従ってアプリを数回統合し、コードを試して、コードに隠れた問題がないかどうかを確認しました。 github https://github.com/googlesamples/google-services でgoogleからサンプルアプリをダウンロードして構成し、同じ問題を解決したため、コードではありませんでした。

コンソール構成に何かがあるように思えたので、異なるGoogleコンソールアプリを切り替え、バンドルIDを変更して再生しました。

この問題を解決できた唯一のことは、代わりにFirebaseを使用することでした。 firebaseコンソールでアプリを作成し、新しいplistをダウンロードしました。

なぜこれが最初に私にとってうまくいかなかったのかはまだわかりませんが、これは一般的な問題ではないようですが、これが誰かを助けることを願っています。乾杯、

0
Daniel Salas

プロジェクトのconsole.developers.google.com/apis/credentialsを確認し、OAuth 2.0クライアントIDセクションにclient_idが既に存在するかどうかを確認します。存在する場合は、そのクライアントIDをコピーして置き換えますGoogleService-Info.plistファイルのCLIENT_IDを使用して、それに応じてREVERSED_CLIENT_IDを(逆の方法で)変更し、アプリをクリーンにしてビルドし、動作することをテストします

0
Raj Oriya