IOSアプリでGmailにサインインすると、次のエラー(スクリーンショット)が表示され、サインインフィールドが表示されません。サインイン画面をWKWebViewに読み込んでいます。
GoogleはOAuthのウェブビューを廃止し、2017年4月20日にリクエストをブロックします。GoogleDevelopersブログで見られるように: https://developers.googleblog。 com/2016/08/modernizing-oauth-interactions-in-native-apps.html
これは、すでに使用する必要があるということですか、それとも別の実行可能なソリューションがありますか?これを更新する必要がある前にもっと時間があったと思いました。
私の推測では、クライアントはGoogle Cloud Consoleに正しく登録されていません。 「WEB」クライアントは通常、サーバーまたはJavascriptアプリケーションです。 iOSアプリはiOSクライアントとして登録する必要があります。
https://developers.google.com/identity/protocols/OAuth2InstalledApp#creatingcred
私もこの問題を見つけました。
Google開発者コンソールを確認し、資格情報キーを確認してください
google-info plistのクライアントIDは、WebではなくiOSアプリケーションから取得する必要があります。
そのクライアントIDを使用してrevereseClientIDにし、それをURIタイプにコピーします
「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
IOS向けGoogleサインインガイドに従ってこの問題が発生しました。 plistで生成されたファイルは適切ではありません。 clientIDとreversedClientIDを確認し、それらがGoogle開発者ポータルのiOSアプリのものであることを確認する必要があります。
REVERSED_CLIENT_IDはdevelopers.google.comIncorrectから生成されるため、Fire Baseでプロジェクトを作成して問題を解決しました。 FireBaseでプロジェクトを作成してみてください https://console.firebase.google.com
以前にサイトを使用して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
ファイルを再ダウンロードすることでエラーを解決しました。
2つのクライアントIDを作成します。 1つはWeb用、もう1つはiOSアプリケーション用です。 Webクライアントはデフォルトでgoogle plistに含まれます。したがって、上記のエラーが発生します。 GoogleコンソールからiOSクライアントIDを使用するか、iOSアプリケーションの資格情報を作成します。
私の経験では、GoogleのSignIn iOS Swiftガイドに従い、Web OAuth JSONファイルをダウンロードしました。文字通り、iOS用の間違ったPlistファイルを提供しました。セットアップ。
他の誰かがこの問題に遭遇した場合に備えて、私が従った手順は次のとおりです。
注:Swift v3およびXCode v8で動作するGoogleサインインAPIを取得しました。
同じエラーが発生していました。次に、アプリのGoogleサインインサービスにアクセスするためのアプリバンドルIDを提供しなかったことがわかりました。リンクのあるページからそれを行います:
1.Google Developerアカウントでサインインします。
2.アプリ名を作成し、プロジェクトからアプリバンドルIDをコピーします:プロジェクトとターゲットリスト>一般>バンドル識別子。
3.国を選択してください
4.Googleサインインを有効にします。
次に、必要な手順を実行して、GoogleサインインをiOSアプリに統合します。
私は同じ問題に直面していました。すべての指示に従ってアプリを数回統合し、コードを試して、コードに隠れた問題がないかどうかを確認しました。 github https://github.com/googlesamples/google-services でgoogleからサンプルアプリをダウンロードして構成し、同じ問題を解決したため、コードではありませんでした。
コンソール構成に何かがあるように思えたので、異なるGoogleコンソールアプリを切り替え、バンドルIDを変更して再生しました。
この問題を解決できた唯一のことは、代わりにFirebaseを使用することでした。 firebaseコンソールでアプリを作成し、新しいplistをダウンロードしました。
なぜこれが最初に私にとってうまくいかなかったのかはまだわかりませんが、これは一般的な問題ではないようですが、これが誰かを助けることを願っています。乾杯、
プロジェクトのconsole.developers.google.com/apis/credentialsを確認し、OAuth 2.0クライアントIDセクションにclient_idが既に存在するかどうかを確認します。存在する場合は、そのクライアントIDをコピーして置き換えますGoogleService-Info.plistファイルのCLIENT_IDを使用して、それに応じてREVERSED_CLIENT_IDを(逆の方法で)変更し、アプリをクリーンにしてビルドし、動作することをテストします