最近項目要接入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里面登錄),才能獲取到。但是當我登錄后,關閉應用,二次打開的話 又很快的能獲取到。坑坑坑~~~~