質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Firebase Authentication

Firebase Authenticationは、Firebaseを利用したユーザーの認証機能です。バックエンドサービス、SDK、アプリでのユーザー認証に使用できるUIライブラリが用意されています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

0回答

179閲覧

FlutterでiOS版のみGoogle Sign-In認証でError 400: invalid_requestが発生する問題

Johnny

総合スコア2

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Firebase Authentication

Firebase Authenticationは、Firebaseを利用したユーザーの認証機能です。バックエンドサービス、SDK、アプリでのユーザー認証に使用できるUIライブラリが用意されています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2025/04/15 12:21

編集2025/04/18 08:58

問題概要

FlutterアプリでFirebase認証を使い、Google Sign-Inを実装しています。Android版では正常に動作しますが、iOS版のみ認証時に「Error 400: invalid_request」が発生します。

エラーメッセージ

{}部分については置換済み。

エラー 400: invalid_request リクエストの詳細: response_type=code code_challenge_method=S256 nonce={省略} device_os=iOS 18.3.2 client_id={CLIENT_ID} emm_support=1 gpsdk=gid-7.1.0 gidenv=ios state={省略} redirect_uri={REVERSED_CLIENT_ID}:/oauth2callback code_challenge={省略} include_granted_scopes=true access_type=offline scope=https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile openid flowName=GeneralOAuthFlow

前提

  • Firebase AuthenticationでGoogleサインインを有効化済み
  • Android側端末では実端末、エミュレータともGoogleサインインの正常動作確認済み(ログイン成功)。ios側ではどちらもエラー発生(アプリがクラッシュするわけではなく、エラーが出る)。
  • iOS端末については複数端末、複数アカウントで同事象が発生することを確認済み。
  • GoogleService-Info.plistはGoogleサインインを有効化後にダウンロードし、xcodeからios/Runner配下に格納済み。
  • AppCheckについて、Android側、ios側とも有効化済みであり、適用APIはFirebase Authentication、Google Identity for iOS等。

環境情報

  • Flutter: 3.29.2
  • firebase_auth: ^5.5.1
  • google_sign_in: ^6.1.5
  • iOS: 18.3.2
  • Xcode: 最新版

実装コード

dart

1// lib/repository/fireauth/sign_in_with_google_repository.dart 2Future<dynamic> signInWithGoogle() async { 3 try { 4 //Google認証フローを起動する 5 final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn(); 6 if (googleUser == null) { 7 debugPrint('Google sign in: User cancelled'); 8 throw const AppException( 9 message: 'ログインをキャンセルしました。', 10 ); 11 } 12 13 final googleAuth = await googleUser.authentication; 14 15 final credential = GoogleAuthProvider.credential( 16 accessToken: googleAuth.accessToken, 17 idToken: googleAuth.idToken, 18 ); 19 UserCredential userCredential = 20 await FirebaseAuth.instance.signInWithCredential(credential); 21 22 return userCredential; 23 } catch (e) { 24 // エラー処理省略 25 } 26}

Info.plist設定

xml

1<key>CFBundleURLTypes</key> 2<array> 3 <dict> 4 <key>CFBundleTypeRole</key> 5 <string>Editor</string> 6 <key>CFBundleURLSchemes</key> 7 <array> 8 <string>{REVERSED_CLIENT_ID}</string> 9 </array> 10 </dict> 11</array> 12<key>GIDClientID</key> 13<string>{CLIENT_ID}</string>

試した解決策

  1. GoogleSignIn()をパラメータなしで使用
  2. ソースコードの方で直接clientIdパラメータを設定
  3. scopesパラメータを追加(email, profile)
  4. firebaseのiosプロジェクトを一度削除し、再作成、再連携。

FirebaseやGoogle Cloud Consoleでの設定を含めてどのように解決すべきでしょうか?

下記でも同じ質問をしています。
firebase - FlutterでiOS版のみGoogle Sign-In認証でError 400: invalid_requestが発生する問題 - スタック・オーバーフロー

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Johnny

2025/04/23 17:42

本件原因が判明し、解決しました。Google Identity for iOSでOAuthクライアントに対して適用オーバーライドを有効にしていたことが原因でした。 適用オーバーライドを削除して継承にしたところ正しく動作するようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問