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

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

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

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

Firebase Authentication

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

5892閲覧

Googleログイン認証の実装

退会済みユーザー

退会済みユーザー

総合スコア0

Firebase

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

Firebase Authentication

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/08/29 08:27

編集2020/08/29 14:32

前提・実現したいこと

こちらこちらのサイトなどを参考に、
Unityにおいて、FirebaseでのAndroidのGoogleログイン認証の実装を試みているのですが、
「new GoogleSignInConfiguration」の記述辺りでエラーが出てしまいます。
他にインポートしなければならないパッケージなどがあるのでしょうか?
もしくはそもそも実装方法が間違っているのでしょうか?
ご教示お願い致します。

試したこと

Firebaseコンソールにて、Unity(Android対応)プロジェクトの作成を行いました。
Firebaseコンソールにて、Firebase Unity SDKをダウンロードして、下記をUnityプロジェクトにインポートしました。

・FirebaseAnalytics.unitypackage ・FirebaseAuth.unitypackage ・FirebaseDatabase.unitypackage

Firebaseコンソールにて、google-services.jsonをダウンロードしてUnityプロジェクトにインポートしました。
Unityプロジェクトにて、プラットフォームをAndroidに切り替えて、パッケージ名を設定しました。

下記ソースコードを空のオブジェクトにアタッチして組んだのですが、「new GoogleSignInConfiguration」の記述辺りでエラーが出てしまいます。

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; // 追記 5using Google; // 追記 6using Firebase; // 追記 7using Firebase.Auth; // 追記 8using Firebase.Database; // 追記 9//using Firebase.Unity.Editor; // 追記 10 11public class MyGoogleSignIn : MonoBehaviour 12{ 13 14 private FirebaseAuth auth; 15 private FirebaseUser user; 16 public Text Info; 17 private string displayName; 18 private string emailAddress; 19 // private string photoUrl; 20 21 void Start() 22 { 23 Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { 24 var dependencyStatus = task.Result; 25 if (dependencyStatus == Firebase.DependencyStatus.Available) { 26 // Create and hold a reference to your FirebaseApp, 27 // where app is a Firebase.FirebaseApp property of your application class. 28 // app = Firebase.FirebaseApp.DefaultInstance; 29 30 // Set a flag here to indicate whether Firebase is ready to use by your app. 31 } else { 32 UnityEngine.Debug.LogError(System.String.Format( 33 "Could not resolve all Firebase dependencies: {0}", dependencyStatus)); 34 // Firebase Unity SDK is not safe to use here. 35 } 36 }); 37 38 InitializeFirebase(); 39 } 40 41 void InitializeFirebase() { 42 auth = Firebase.Auth.FirebaseAuth.DefaultInstance; 43 auth.StateChanged += AuthStateChanged; 44 AuthStateChanged(this, null); 45 } 46 47 void AuthStateChanged(object sender, System.EventArgs eventArgs) { 48 if (auth.CurrentUser != user) { 49 bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null; 50 if (!signedIn && user != null) { 51 Debug.Log("Signed out " + user.UserId); 52 } 53 user = auth.CurrentUser; 54 if (signedIn) { 55 Debug.Log("Signed in " + user.UserId); 56 displayName = user.DisplayName ?? ""; 57 emailAddress = user.Email ?? ""; 58 // photoUrl = user.PhotoUrl ?? ""; 59 } 60 } 61 } 62 63 public void GoogleSignInButton() 64 { 65 GoogleSignIn.Configuration = new GoogleSignInConfiguration 66 { 67 RequestIdToken = true, 68 // Copy this value from the google-service.json file. 69 // oauth_client with type == 3 70 WebClientId = "318103883585-s7rfmu149ni9rhcrtt10ufrqi8oeshss.apps.googleusercontent.com" 71 }; 72 73 Task<GoogleSignInUser> signIn = GoogleSignIn.DefaultInstance.SignIn(); 74 75 TaskCompletionSource<FirebaseUser> signInCompleted = new TaskCompletionSource<FirebaseUser>(); 76 signIn.ContinueWith(task => 77 { 78 if (task.IsCanceled) 79 { 80 signInCompleted.SetCanceled(); 81 Info.text = "canceled 1 " + FBuser.UserId.ToString(); 82 } 83 else if (task.IsFaulted) 84 { 85 signInCompleted.SetException(task.Exception); 86 Info.text = "is faulted 1 " + FBuser.UserId.ToString(); 87 } 88 else 89 { 90 91 Credential credential = GoogleAuthProvider.GetCredential(task.Result.IdToken, null); 92 auth.SignInWithCredentialAsync(credential).ContinueWith(authTask => 93 { 94 if (authTask.IsCanceled) 95 { 96 signInCompleted.SetCanceled(); 97 Info.text = "canceled " + FBuser.UserId.ToString(); 98 } 99 else if (authTask.IsFaulted) 100 { 101 signInCompleted.SetException(authTask.Exception); 102 Info.text = "is faulted " + FBuser.UserId.ToString(); 103 } 104 else 105 { 106 signInCompleted.SetResult(authTask.Result); 107 Info.text = "sign in " + FBuser.UserId.ToString() + " " + FBuser.DisplayName.ToString(); 108 109 } 110 }); 111 } 112 }); 113 } 114 115}

エラーメッセージ

Assets\MyGoogleSignIn.cs(65,9): error CS0103: The name 'GoogleSignIn' does not exist in the current context
Assets\MyGoogleSignIn.cs(65,42): error CS0246: The type or namespace name 'GoogleSignInConfiguration' could not be found (are you missing a using directive or an assembly reference?)
Assets\MyGoogleSignIn.cs(73,9): error CS0246: The type or namespace name 'Task<>' could not be found (are you missing a using directive or an assembly reference?)
Assets\MyGoogleSignIn.cs(73,14): error CS0246: The type or namespace name 'GoogleSignInUser' could not be found (are you missing a using directive or an assembly reference?)
Assets\MyGoogleSignIn.cs(73,41): error CS0103: The name 'GoogleSignIn' does not exist in the current context
Assets\MyGoogleSignIn.cs(75,9): error CS0246: The type or namespace name 'TaskCompletionSource<>' could not be found (are you missing a using directive or an assembly reference?)
Assets\MyGoogleSignIn.cs(75,66): error CS0246: The type or namespace name 'TaskCompletionSource<>' could not be found (are you missing a using directive or an assembly reference?)

補足情報(FW/ツールのバージョンなど)

Unity 2020.1.2f1 (64-bit)

追記

Startメソッドを下記のように書き換えました。

void Start() { Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { var dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { // Create and hold a reference to your FirebaseApp, // where app is a Firebase.FirebaseApp property of your application class. // app = Firebase.FirebaseApp.DefaultInstance; // Set a flag here to indicate whether Firebase is ready to use by your app. } else { UnityEngine.Debug.LogError(System.String.Format( "Could not resolve all Firebase dependencies: {0}", dependencyStatus)); // Firebase Unity SDK is not safe to use here. } }); InitializeFirebase(); Firebase.Auth.Credential credential = Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, googleAccessToken); auth.SignInWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception); return; } Firebase.Auth.FirebaseUser newUser = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", newUser.DisplayName, newUser.UserId); }); }

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

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

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

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

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

guest

回答1

0

ベストアンサー

参考にされたサイトではFirebaseとGoogle Sign-In Unity Pluginを組み合わせた方法なのでこのパッケージも必要です。
Googleログイン認証するためにはGoogle Sign-In Unity Pluginと組み合せが必要でした。
Google Sign-In Unity Plugin
パッケージをインポートしてUsing this plugin with Firebase Authの辺りのコードで認証できます。

またFirebase AuthenticationにもGoogleログイン認証がありますのでこちらを利用する方法もあります。
プロフィール情報を取得したりサインアウトは公式のドキュメントに説明があります。
Google ログインと Unity を使用して認証する

投稿2020/08/29 13:04

編集2020/08/29 15:16
shiena

総合スコア1827

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

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

退会済みユーザー

退会済みユーザー

2020/08/29 14:36

ご回答ありがとうございます。 後者の方で実装してみようと思い、ご提示いただいページのコードをStartメソッドに書いたのですが(詳細は質問欄に追記しました)、 「googleIdToken, googleAccessToken」の取得ができていなく、どのようにすれば取得できるかご存知ですか? ご提示のページには、 > Android 用の手順または iOS 用の手順に沿って、Google ログイン用の ID トークンを取得します。 とあり、Androidのリンクをクリックしてページを見てみると、 Java Androidの方法やKotlin Androidの方法でしか書かれていなく、Unityではどのように取得してよいか書かれていなかったです。
退会済みユーザー

退会済みユーザー

2020/08/30 05:59

ご回答ありがとうございます。 パッケージをインポートして、コード自体にはエラーが出なくなりました。 ありがとうございます。 最後に質問させていただきたいのですが、 Google Sing-in Unity Pluginが必要という情報は、どのサイトで掲載されていましたか? 情報元を教えていただけませんか?
退会済みユーザー

退会済みユーザー

2020/08/30 07:13

ご回答ありがとうございます。 とても勉強になりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問