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

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

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

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

Firebase Authentication

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

2回答

1240閲覧

Firebase Authを用いたアプリでログイン処理ができない

suzumushi

総合スコア4

Firebase

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

Firebase Authentication

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2020/08/24 06:22

編集2020/08/26 01:57

取り組んでいること

現在Android Studioで、Firebaseを用いたログイン処理を使ったアプリを開発しています。今回はGoogleのソーシャルログインのみを使用しています。

直面している課題

数日前に実装が完了し、実機にインストールしたところ問題なくログインできることが確認できました。
その後Google play storeにアプリを公開・テストを行ったところ、play storeからダウンロードしたものはなぜか

「サインインに失敗しました」

というトースト表示が出てログインが拒否されてしまいました。
この事象を解決したいです。

###該当コード
サインインのインテントは下記のコードで定義しています。

java

1public void createSignInIntent() { 2 // [START auth_fui_create_intent] 3 // Choose authentication providers 4 List<AuthUI.IdpConfig> providers = Arrays.asList( 5 new AuthUI.IdpConfig.GoogleBuilder().build() 6 ); 7 8 // Create and launch sign-in intent 9 startActivityForResult( 10 AuthUI.getInstance() 11 .createSignInIntentBuilder() 12 .setAvailableProviders(providers) 13 .build(), 14 RC_SIGN_IN); 15 // [END auth_fui_create_intent] 16 }

これをonCreateで呼び出しています。
そしてインテントの結果の受け取りは以下で定義しています。

Java

1protected void onActivityResult(int requestCode, int resultCode, Intent data) { 2 super.onActivityResult(requestCode, resultCode, data); 3 4 if (requestCode == RC_SIGN_IN) { 5 IdpResponse response = IdpResponse.fromResultIntent(data); 6 7 if (resultCode == RESULT_OK) { 8 // Successfully signed in 9 FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 10 CheckUsers(user); 11 } else { 12 Toast.makeText(MainActivity.this,"サインインに失敗しました",Toast.LENGTH_LONG).show(); 13 } 14 } 15 //... 16}

上記のコードから分かるようにresultCodeがRESULT_OKになっていないため、ログインが完了していない模様です。

ご回答の方どうぞよろしくお願い致します。

追記(2020/8/25)

他の方より、ログイン失敗時にこちらにあるようなデバッグ方法を教えていただきました。先ほど実装し、現在play storeの審査待ちです。

追記(2020/8/26)

先ほどplay storeからダウンロードしたものを実行して、エラーコードを取得しました。
エラーコードは"10"でした.こちらのリンクを読む限り、SHA1の設定ミスが考えられるようですがこちらはきちんと設定したので他に原因があると考えられます。OAuth認証のミスという話も上記リンクの中にありますが、今回はauthUIを使用しこちらの設定は不要であったため特に心当たりがありません。
どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

このページから対象コード部分のみ抜粋しています。
【Android】Firebaseを利用したToDoアプリ開発

java

1public void loginGoogle() { 2 mAuth = FirebaseAuth.getInstance(); 3 // Google ログイン認証 4 GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 5 .requestIdToken(getString(R.string.default_web_client_id)) 6 .requestEmail() 7 .build(); 8 9 mGoogleApiClient = new GoogleApiClient.Builder(this) 10 .enableAutoManage(this/*FragmentActivity*/, this/*OnConnectionFailedListener*/) 11 .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 12 .build(); 13 14 Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 15 startActivityForResult(signInIntent, RC_SIGN_IN); 16 }

ActivityResultのコード

java

1@Override 2 public void onActivityResult(int requestCode, int resultCode, Intent data) { 3 super.onActivityResult(requestCode, resultCode, data); 4 5 if (requestCode == RC_SIGN_IN) { 6 GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 7 if (result.isSuccess()) { 8 //ログインに成功した場合 9 GoogleSignInAccount account = result.getSignInAccount(); 10 firebaseAuthWithGoogle(account); 11 } else { 12 //ログインに失敗した場合 13 System.out.println(result.getStatus()); 14 Toast.makeText(LoginActivity.this, "Error", Toast.LENGTH_SHORT).show(); 15 } 16 17 } 18 } 19 20 private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { 21 AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); 22 mAuth.signInWithCredential(credential) 23 .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 24 @Override 25 public void onComplete(@NonNull Task<AuthResult> task) { 26 if (task.isSuccessful()) { 27 changeActivity(); 28 Log.d("LoginActivity", "ログインに成功"); 29 } else { 30 Toast.makeText(LoginActivity.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show(); 31 } 32 } 33 }); 34 }

あなたのコードを見た感じ、必要なコードが少々抜けている気がしたのでぜひこの方法を試してみてください。

投稿2020/09/10 13:35

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

AndroidManifest.xmlにインターネットパーミッションの記述はしましたか?

投稿2020/09/04 15:00

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

suzumushi

2020/09/04 15:46

まだまだ未熟者ですみません…。 どのような記述をすれば良いのでしょうか
退会済みユーザー

退会済みユーザー

2020/09/05 06:21 編集

<android:name="android.permission.INTERNET" /> この記述はしましたか? もし書いてないのであれば、上のコードを書く場所は〈Application〉の上です。
suzumushi

2020/09/10 01:00

返信が遅くなり、大変申し訳ございません。 実際に書き込みましたが、同様のエラーが出てしまいました...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問