Unity接入Google登录

  • 接入FireBaseSdk和GoogleSignIn插件
    • FireBase接入文档
    • GoogleSignIn
  • 编写登录代码
  • 可能出现的问题
    • 运行时弹出Google登录界面,选了账号后没有反应
    • 出现DllNotFoundException: native-googlesignin
  • 参考
    • 2022.7.18 踩坑记录

接入FireBaseSdk和GoogleSignIn插件

FireBase接入文档

https://firebase.google.com/download/unity?authuser=0
接入FireBase时,FirebaseAuth.unitypackage必须接入,这是使用FireBase进行身份验证的入口

GoogleSignIn

https://github.com/googlesamples/google-signin-unity

编写登录代码

public FirebaseAuth auth;// Start is called before the first frame updatevoid Start(){GoogleSignIn.Configuration = new GoogleSignInConfiguration(){RequestIdToken = true,//此处填写从FireBase控制台上下载的配置文件中client_id client_type == 3 的 oauth的值WebClientId = ""};}private void OnGUI(){if (GUI.Button(new Rect(2000,300,100,100), "Google")){Debug.Log("GoogleLogin()");auth = FirebaseAuth.DefaultInstance;Task<GoogleSignInUser> signIn = GoogleSignIn.DefaultInstance.SignIn();signIn.ContinueWith(task =>{if (task.IsCanceled){Debug.Log("signIn.ContinueWith Login cancel");}else if (task.IsFaulted){Debug.Log("signIn.ContinueWith Login error : " + task.Exception.Message);}else{var result = ((Task<GoogleSignInUser>) task).Result;Credential credential =Firebase.Auth.GoogleAuthProvider.GetCredential(result.IdToken,null);auth.SignInWithCredentialAsync(credential).ContinueWith (authTask => {if (authTask.IsCanceled) {Debug.LogError("SignInWithCredentialAsync was canceled.");} else if (authTask.IsFaulted){Debug.LogError("SignInWithCredentialAsync encountered an error: " + authTask.Exception);} else{Debug.Log("Login Google success");FirebaseUser newUser = authTask.Result;Debug.Log("userid:" + newUser.UserId + "  koTen:");newUser.TokenAsync(false).ContinueWith((t) =>{var toKen = t.Result;Debug.Log("toKen=" + toKen);string info = newUser.UserId + "/" + toKen;});}});}});}}

注意:webClient必须要有值,填写值为FireBase控制台上下载的配置文件中client_type == 3 的 oauth的值

可能出现的问题

运行时弹出Google登录界面,选了账号后没有反应

测试时使用国内机无法登录,在android studio中查看日志会看到有报错

Failed to validate DexClassLoader. java.lang.ClassNotFoundException: Didn’t find class “com.google.android.gms.chimera.DynamiteModuleInitializer”

但是使用XiaoMi 9T海外机时可以正常登录,可能时因为Play服务版本问题造成

出现DllNotFoundException: native-googlesignin

不使用package包导入,下载github上的demo用例,直接把用例上的文件复制粘贴过来

参考

https://firebase.google.com/docs/auth/unity/google-signin?hl=zh&authuser=0
https://github.com/googlesamples/google-signin-unity
https://blog.csdn.net/Good_V/article/details/114528453

2022.7.18 踩坑记录

如果项目是用了多线程,那么原本登录时调用的 ContinueWith 需要改为 ContinueWithOnMainThread ,只在主线程调用,例如


如果有做Google Play服务检查,那么要在检查完毕后再调用FireBase的登录接口
检查Google Play服务代码

Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>{var dependencyStatus = task.Result;Debug.Log("result--->" + dependencyStatus);//在这里可以添加一个标记,表示已经完成检查//checkOver = trueif (dependencyStatus == Firebase.DependencyStatus.Available){//检查成功后需要做的事}else{UnityEngine.Debug.LogError(System.String.Format("Could not resolve all Firebase dependencies: {0}", dependencyStatus));}});

Unity接入Google登录相关推荐

  1. Unity:Firebase接入Google登录

    Unity:Firebase接入Google登录 开启Firebase的登录方式 问题小结 Google登录代码 调用登录代码 参考文章: 此文章只是粗浅之作,记录而已,有错望指出,不胜感激 开启Fi ...

  2. Unity接入Google Play遇到Authentication canceled

    Unity接入Google Play遇到Authentication canceled 最近在做接入google play的活,环境是Unity2018.4.0f,使用 GooglePlayGames ...

  3. unity 接入 Facebook 登录

    Unity 接入 Facebook 登录 Unity 接入 Facebook 登陆 使用unity sdk 到这 https://developers.facebook.com/docs/unity/ ...

  4. 【unity】Google 登录和Google支付接入unity

    公司项目需要上线谷歌商店,因为某些原因不得不接手SDK接入的任务.然而作为一个菜鸡,实在是有点难为我了,磨磨唧唧搞了半个月才搞好.感谢老大的宽容. 目录 Google 登录 Google Play G ...

  5. Unity 接入Apple登录

    文章末尾有资源插件链接 在6月的全球开发者大会(WWDC)上,苹果宣布了一款新产品:使用苹果登录.随着iOS 13即将于9月19日发布,苹果已经更新了App Store审查指南,现在他们要求任何使用第 ...

  6. iOS接入Google登录

    目录 1.在Google Cloud后台配置客户端ID 2.iOS配置URL Types​编辑 3.代码实操 1.在Google Cloud后台配置客户端ID 首先要在 Google Cloud 中创 ...

  7. Unity接入Google广告(AdMob)

    打开官网文档: https://developers.google.com/admob/unity/start?hl=zh-CN 先进行注册,自己创建一个应用便可以获取到应用ID 3.将Unity的插 ...

  8. 接入google 登录 google oauth2

    注册谷歌账号 去创建 一个app设置的 url 访问 一定要和第二步中的http://www.newplat.com/google/googleLogin 一致 demo : https://deve ...

  9. (unity)新手接入Facebook登录,分享以及google登录,Android,IOS,OC接入篇

    最近接Android,IOS的Facebook登录,分享 以及Google登录,分享流程以及遇到的问题整理. 一. Android接入 google登录 第一步,前往 [ firebase] http ...

最新文章

  1. iOS base64 MD5
  2. 健身也内卷?这届网友用 Python 掌握了做标准俯卧撑的秘诀
  3. 【错误记录】Google Play 上架报错 ( 您还没有为此轨道选择任何国家或地区。至少要添加 1 个国家或地区才能发布此版本)
  4. python手机app 授权登录_Appium+unittest+python登录app
  5. spring源码研究
  6. 关于Panel隐藏横向滚动条
  7. Chap2-构造函数语意学
  8. java gui 按键 数组_java GUI分配数组值
  9. web.xml.jsf_面向初学者的JSF 2.0教程
  10. 制作jffs2根文件系统
  11. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(二)
  12. SeleniumCSS选择器
  13. centos6.6安装中文支持
  14. 火星开发的价值_发现“火星”岩石密度比预想更低,火星探测开发的“九大价值”...
  15. 幼儿园数学目标_幼儿园数学区目标
  16. mysql 字段名 减号_MySQL减号
  17. 计算机 未保存,电脑突然关机wps没保存怎么办
  18. 移动磁盘数据错误循环冗余检查的文件找回方法
  19. 编程入门先学python好不好,学python用什么软件编程
  20. mysql emoji表情 保存utf8mb4 错误原因总结

热门文章

  1. Latex Tips: 如何输入矩阵(illustrated in Jupyter Notebook)
  2. CAD图纸无法复制粘贴该怎么办?
  3. Larry wall - Perl之父
  4. 在网络安全领域,比较牛的中国黑客有哪些?
  5. 中兴通讯某产品大规模敏捷转型实践
  6. appollo-参考线平滑设定
  7. 常规放大电路和差分放大电路
  8. ASCII表完整版(包含16进制对应表)——看看16进制与10进制的转化
  9. Hadoop -- hadoop介绍
  10. freemarker html 换行,java使用freemarker模板导出word,合并单元格,单元格内换行