最近项目要接入Google的登录。说一下踩过的坑
第一次接入Google的登录sdk,网上搜索了半天。发现自己搜索错关键词了。我一直在网上搜索Google登录。结果一直搜索出来的文章全是Android的接入方法。
结果我从unity导出android工程后按照网上的方法接入。结果发现是行不通的!
接下里介绍下专属于Unity接入的Google登录
Unity接入Google登录官网接入文档(不用翻墙也是可以打开的):https://github.com/playgameservices/play-games-plugin-for-unity
点击current-build后下载 GooglePlayGamesPlugin-0.9.39a.unitypackage
下载后的文件双击就可以导入unity工程了。
导入后如果碰到unity报错
Cannot find candidate artifact for com.android.support:support-v4:25.2.0
则需要打开SDK Manager下载
切换unity工程为android平台(File->Build Setting->Android->Switch platform)
加下来点击unity菜单中的Window->Google Play Games->Setup->Android setup...,(操作如下图)
就可以打开如下界面:
接下来就是填写上图中2个红框的部分。
第一个红框中填写的内容,其实是你在Google申请的应用的成就信息。
第二个红框(即Client ID)填写的是Google APIs中项目OAuth 2.0客户端ID中网页客户端(Web客户端)的客户端ID(这里特别要注意了 必须填写Web客户端的ID,否则是不行的)
网址:https://console.developers.google.com/apis/credentials?project=myproject-1234
填写完事后点击Setup按钮,设置完成
如果连续弹出一下2个框,表明是没问题了!
接下来就是Unity中写登录代码了
static PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder() .EnableSavedGames() .RequestEmail() .RequestServerAuthCode(false) .RequestIdToken() .Build(); public void SignIn() { PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.DebugLogEnabled = true; PlayGamesPlatform.Activate(); Social.Active.localUser.Authenticate((bool success)=>{ if(success){ Debug.Log("userName:" + ((PlayGamesLocalUser)Social.localUser).userName); Debug.Log("登录成功"); emailStr = ((PlayGamesLocalUser)Social.localUser).Email; tokenStr = ((PlayGamesLocalUser)Social.localUser).GetIdToken(); } else { Debug.Log("登录失败"); } }); }
打包之前 记得设置最小的API Level为4.0以上
题外话:
其实写这篇文章的时候,我去官网上看。出现了新的版本(也就是这边文章写的版本)GooglePlayGamesPlugin-0.9.39a.unitypackage
前一段时间,我在官网上下载的是GooglePlayGamesPlugin-0.9.38a.unitypackage。然后这个版本坑了我好几天。(这个0.9.39a这个版本经过测试,无以下bug)
首先。当我登录成功的时候。特别的首次登录,会出现登录成功了。Google的欢迎logo都弹出来了。结果登录回调是失败。要么。就是登录回调里面获取IdToken值和Email值的时候。居然是空的。是空的。空的。的。。。
后面测试发现。首次登录(比如登出后登录),当我登录成功的时候。登录回调里Social.localUser居然是null;
我只能写在Update里面。如果为空就持续调用登录,然后获取IdToken值和Email值。然后经过测试。首次登录偶尔还是获取不到。要等很久(因为没有获取到我就一直在Update里面登录),才能获取到。但是当我登录后,关闭应用,二次打开的话 又很快的能获取到。坑坑坑~~~~