diff --git a/Assets/PipeOut/Scenes/Loading.unity b/Assets/PipeOut/Scenes/Loading.unity index 8c1c3cda..3bb4a2de 100644 --- a/Assets/PipeOut/Scenes/Loading.unity +++ b/Assets/PipeOut/Scenes/Loading.unity @@ -198,6 +198,53 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 83133762} m_CullTransparentMesh: 1 +--- !u!21 &99403971 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: 2DxFX/Standard/Shiny_Reflect + m_Shader: {fileID: 4800000, guid: 6fc94ae14d17d3642b09718b5b932fd2, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex2: + m_Texture: {fileID: 2800000, guid: 6ed1aafd335608e48aa3198044a161df, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Alpha: 0 + - _ColorMask: 15 + - _Distortion: 0.47358456 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _Value2: 0.5 + - _Value3: 1 + - _Value4: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] --- !u!1 &127207264 GameObject: m_ObjectHideFlags: 0 @@ -863,6 +910,51 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 439213423} m_CullTransparentMesh: 1 +--- !u!1 &479665480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 479665482} + - component: {fileID: 479665481} + m_Layer: 0 + m_Name: GoogleSignInHandler + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &479665481 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 479665480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 45ec4119cd173084d8102fa5bb179386, type: 3} + m_Name: + m_EditorClassIdentifier: + googleSignInButton: {fileID: 1119814872} +--- !u!4 &479665482 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 479665480} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 357.77216, y: 590.00824, z: -2.5999413} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &502314208 GameObject: m_ObjectHideFlags: 0 @@ -2718,7 +2810,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 1380792927} + m_Material: {fileID: 99403971} m_Color: {r: 1, g: 1, b: 1, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} @@ -2791,53 +2883,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!21 &1380792927 -Material: - serializedVersion: 8 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: 2DxFX/Standard/Shiny_Reflect - m_Shader: {fileID: 4800000, guid: 6fc94ae14d17d3642b09718b5b932fd2, type: 3} - m_Parent: {fileID: 0} - m_ModifiedSerializedProperties: 0 - m_ValidKeywords: [] - m_InvalidKeywords: [] - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_LockedProperties: - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex2: - m_Texture: {fileID: 2800000, guid: 6ed1aafd335608e48aa3198044a161df, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Ints: [] - m_Floats: - - _Alpha: 0 - - _ColorMask: 15 - - _Distortion: 1.1174531 - - _Stencil: 0 - - _StencilComp: 8 - - _StencilOp: 0 - - _StencilReadMask: 255 - - _StencilWriteMask: 255 - - _Value2: 0.5 - - _Value3: 1 - - _Value4: 0 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - m_BuildTextureStacks: [] --- !u!1 &1407567915 GameObject: m_ObjectHideFlags: 0 @@ -3617,3 +3662,4 @@ SceneRoots: - {fileID: 1797903893} - {fileID: 1466205357} - {fileID: 502314209} + - {fileID: 479665482} diff --git a/Assets/PlayFabSDK/Shared/Public/Resources/PlayFabSharedSettings.asset b/Assets/PlayFabSDK/Shared/Public/Resources/PlayFabSharedSettings.asset index f4ba0bbb..84798dd2 100644 --- a/Assets/PlayFabSDK/Shared/Public/Resources/PlayFabSharedSettings.asset +++ b/Assets/PlayFabSDK/Shared/Public/Resources/PlayFabSharedSettings.asset @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 093286084a3d1994a9c28281a1c38b1d, type: 3} m_Name: PlayFabSharedSettings m_EditorClassIdentifier: - TitleId: + TitleId: 168AE2 DeveloperSecretKey: ProductionEnvironmentUrl: RequestType: 0 diff --git a/Assets/Scripts/Authentication/FirebaseInit.cs b/Assets/Scripts/Authentication/FirebaseInit.cs index 061f8524..d35ccab9 100644 --- a/Assets/Scripts/Authentication/FirebaseInit.cs +++ b/Assets/Scripts/Authentication/FirebaseInit.cs @@ -22,10 +22,5 @@ public class FirebaseInit : MonoBehaviour } }); } - - // Update is called once per frame - void Update() - { - - } + } diff --git a/Assets/Scripts/Authentication/GoogleSignInHandler.cs b/Assets/Scripts/Authentication/GoogleSignInHandler.cs new file mode 100644 index 00000000..cd35f554 --- /dev/null +++ b/Assets/Scripts/Authentication/GoogleSignInHandler.cs @@ -0,0 +1,102 @@ +using System; +using Firebase.Auth; +using Google; +using UnityEngine; +using System.Threading.Tasks; +using Firebase.Extensions; +using PlayFab; +using PlayFab.ClientModels; +using UnityEngine.UI; + +public class GoogleSignInHandler : MonoBehaviour +{ + private FirebaseAuth auth; + private GoogleSignInConfiguration configuration; + [SerializeField] private Button googleSignInButton; + + private void OnEnable() + { + googleSignInButton.onClick.AddListener(SignInWithGoogle); + } + + private void OnDisable() + { + googleSignInButton.onClick.RemoveListener(SignInWithGoogle); + } + + void Start() + { + PlayFabSettings.staticSettings.TitleId = GameConstants.PlayfabTitleId; + auth = FirebaseAuth.DefaultInstance; + configuration = new GoogleSignInConfiguration + { + WebClientId = GameConstants.WebClientID, + RequestEmail = true, + RequestAuthCode = true, + RequestIdToken = true + }; + GoogleSignIn.Configuration = configuration; + GoogleSignIn.DefaultInstance.EnableDebugLogging(true); + } + + private void SignInWithGoogle() + { + if (GoogleSignIn.Configuration == null) + { + Debug.LogWarning("Google Sign-In Configuration is not set."); + return; + } + + GoogleSignIn.DefaultInstance.SignIn().ContinueWith(OnGoogleSignIn); + } + + private void OnGoogleSignIn(Task task) + { + if (task.IsFaulted || task.IsCanceled || task.Result == null) + { + Debug.LogError("Google Sign-In failed."); + return; + } + + // Firebase uses ID token + var firebaseCredential = GoogleAuthProvider.GetCredential(task.Result.IdToken, null); + FirebaseAuth.DefaultInstance.SignInWithCredentialAsync(firebaseCredential).ContinueWith(authTask => + { + if (authTask.IsCompleted && !authTask.IsFaulted) + { + Debug.Log("Firebase sign-in successful"); + + // PlayFab uses ServerAuthCode + var request = new LoginWithGoogleAccountRequest + { + TitleId = PlayFabSettings.staticSettings.TitleId, + ServerAuthCode = task.Result.AuthCode, + CreateAccount = true + }; + + PlayFabClientAPI.LoginWithGoogleAccount(request, OnPlayFabLoginSuccess, OnPlayFabLoginFailure); + } + else + { + Debug.LogError("Firebase sign-in failed: " + authTask.Exception); + } + }); + } + private void OnPlayFabLoginSuccess(LoginResult result) + { + Debug.Log("✅ PlayFab Login Success! PlayFab ID: " + result.PlayFabId); + + SafePlayerPrefs.SetString("PlayFabID", result.PlayFabId); + PlayerPrefs.Save(); + + } + + private void OnPlayFabLoginFailure(PlayFabError error) + { + Debug.LogError("PlayFab Login Failed: " + error.GenerateErrorReport()); + + googleSignInButton.gameObject.SetActive(true); + googleSignInButton.interactable = true; + } + +} \ No newline at end of file diff --git a/Assets/Scripts/Authentication/GoogleSignInHandler.cs.meta b/Assets/Scripts/Authentication/GoogleSignInHandler.cs.meta new file mode 100644 index 00000000..b3c82bef --- /dev/null +++ b/Assets/Scripts/Authentication/GoogleSignInHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45ec4119cd173084d8102fa5bb179386 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Dev/GameConstants.cs b/Assets/Scripts/Dev/GameConstants.cs index 3c74ddc8..b375ccb3 100644 --- a/Assets/Scripts/Dev/GameConstants.cs +++ b/Assets/Scripts/Dev/GameConstants.cs @@ -13,6 +13,7 @@ public class GameConstants public static string PrivacyPolicyLink = "https://rizze.io/eula"; public static string OSN_Android = "3ee530aa-8613-485b-9cbd-0263727badc5"; public static string OSN_iOS = "aabdcf42-77ef-47c3-83f7-c97a1af87a5f"; + public static string WebClientID = "627393855302-ie99j5loumrkt3gqi5mopa1c1avu7o86.apps.googleusercontent.com"; public static string AndroidURL = diff --git a/Assets/StreamingAssets/google-services-desktop.json.meta b/Assets/StreamingAssets/google-services-desktop.json.meta index 05078d8c..8a097725 100644 --- a/Assets/StreamingAssets/google-services-desktop.json.meta +++ b/Assets/StreamingAssets/google-services-desktop.json.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 727af0cfe68fd1842b3f24039411676e +guid: 045794a207c1f9c45b4d2b327c43ddaa TextScriptImporter: externalObjects: {} userData: