前提・実現したいこと
こちらやこちらのサイトなどを参考に、
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); }); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/08/29 14:36
2020/08/29 15:10
退会済みユーザー
2020/08/30 05:59
2020/08/30 06:23
退会済みユーザー
2020/08/30 07:13