Unity/Firebase谷歌登录在Android上生效

Unity/Firebase谷歌登录在Android上生效,firebase,unity3d,google-signin,Firebase,Unity3d,Google Signin,因此,我尝试在我的Unity应用程序上添加一个Google登录选项,将其与Firebase混合使用。因此,我导入GoogleSignin插件v1.04并编写代码。将其生成为*.apk文件时,控制台上未显示任何错误。但是,当我尝试登录时,在我选择要使用哪个帐户登录后,强制关闭。 以下是我的完整代码: using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using Goog

因此,我尝试在我的Unity应用程序上添加一个Google登录选项,将其与Firebase混合使用。因此,我导入GoogleSignin插件v1.04并编写代码。将其生成为*.apk文件时,控制台上未显示任何错误。但是,当我尝试登录时,在我选择要使用哪个帐户登录后,强制关闭。 以下是我的完整代码:

using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using Google;
using UnityEngine;
using Firebase.Auth;

public class googleAuth : MonoBehaviour
{
    [SerializeField] string webClientID = "190747548795-haa9ej8fkg584c1r5nkhu7u6ol50tmcf.apps.googleusercontent.com";
    GoogleSignInConfiguration configuration;
    private void Awake() {
        configuration = new GoogleSignInConfiguration{
        WebClientId = webClientID,
            RequestIdToken = true
        };
    }

    public void loginGoogle(){
      GoogleSignIn.Configuration = configuration;
      GoogleSignIn.Configuration.UseGameSignIn = false;
      GoogleSignIn.Configuration.RequestIdToken = true;
      GoogleSignIn.DefaultInstance.SignIn().ContinueWith(OnAuthenticationFinished);
    }
    void OnAuthenticationFinished(Task<GoogleSignInUser> task){
        if(task.IsCanceled)
            print("error");
        if(task.IsFaulted)
            print("error");
        if(task.IsCompleted){
            googleFirebase(task.Result.IdToken);
        }
    }
    void googleFirebase(string token){
        Credential credential = Firebase.Auth.GoogleAuthProvider.GetCredential(token,null);
        FirebaseAuth.DefaultInstance.SignInWithCredentialAsync(credential);
    }
}
使用系统集合;
使用System.Collections.Generic;
使用System.Threading.Tasks;
使用谷歌;
使用UnityEngine;
使用Firebase.Auth;
公共类googleAuth:单一行为
{
[SerializeField]string webClientID=“190747548795-haa9ej8fkg584c1r5nkhu7u6ol50tmcf.apps.googleusercontent.com”;
谷歌配置配置;
私人空间{
配置=新谷歌签名配置{
WebClientId=WebClientId,
RequestIdToken=true
};
}
public void logingogle(){
GoogleSignIn.Configuration=配置;
GoogleSignIn.Configuration.UseGameSignIn=false;
GoogleSignIn.Configuration.RequestIdToken=true;
GoogleSignIn.DefaultInstance.SignIn().ContinueWith(OnAuthenticationFinished);
}
验证已完成时作废(任务){
如果(task.IsCanceled)
打印(“错误”);
if(task.IsFaulted)
打印(“错误”);
如果(任务已完成){
googleFirebase(task.Result.IdToken);
}
}
无效googleFirebase(字符串标记){
Credential Credential=Firebase.Auth.GoogleAuthProvider.GetCredential(令牌,null);
FirebaseAuth.DefaultInstance.SignInWithCredentialAsync(凭证);
}
}

这意味着您缺少Plugins/Android/文件夹中的文件

  • 在Firebase控制台上创建应用程序
  • 身份验证->登录方法->谷歌启用
  • 下载“googleservices.json”文件
  • 放入资产/文件夹,然后您可以导入插件
  • 导入Jar解析器后,它将解析所需文件,并在Plugins/Android中为firebase创建文件夹
  • 然后,您需要在生成设置中检查捆绑包ID并运行应用程序。 我认为您需要根据正确创建应用程序的代码检查步骤5中的问题

  • 所以其中一个原因是缺少一些插件?但在其他登录选项(例如facebook)上,它可以工作是的,这是可行的,因为facebook有自己的SDK,而且facebook也提供自己的jar解析器,这可能会给您带来问题。如果我重新导入firebase SDK和google登录插件,它能解决问题吗?请备份一次facebook.aar文件。因为这之后你的Facebook可能会失效。所以我已经重新导入了这些东西,但它仍然崩溃,有什么帮助吗?