2016-01-21 74 views
0

我希望能夠在我的統一遊戲中使用我的谷歌帳戶登錄。獲取訪問令牌通過在谷歌統一登錄

我試過使用Play遊戲服務,這是最好的解決方案,我可以登錄並獲取名稱和ID以及東西,但我無法獲取使用的訪問令牌,所以我可以驗證誰用戶在我的服務器上。

我有一個服務器有很多玩家數據,我不能放在遊戲服務中,所以我需要驗證它是否是正確的用戶,並且ID不夠安全。

如何使用Google登錄並獲得統一的訪問令牌?

歡呼聲

+0

你可以試試這個資產商店包。適用於iOS和Android的工作情況良好,如果需要,可以將其擴展到網絡。另外玩iOS的遊戲服務已經過時了。 https://www.assetstore.unity3d.com/en/#!/content/94517 – SourabhV

回答

0

您是否嘗試過爲自己的遊戲編寫自定義Android插件? 你可以在你的Unity遊戲中獲得任何你可以在原生Android應用上獲得的東西,然後將這些數據傳遞給你的服務器。

他們有非常簡單的文檔,它: http://docs.unity3d.com/Manual/PluginsForAndroid.html

我希望幫助!

編輯:精心製作的聲明。

+1

謝謝 - 我已經考慮過了,但我只想知道其他人是否構建了一個或知道我可以使用之前我開始了這一點; o)也許我應該剛剛開始,而不是坐着,盯着這個話題... – smokiespartakus

+0

@smokiespartakus我以前使用谷歌+登錄令牌,並可以告訴你,它比很多工作更容易的其他API!祝你好運! – andeart

0

您可以使用此代碼來獲取令牌:

PlayGamesPlatform.Instance.Authenticate(success => 
{ 
    if (success) 
    { 
     Debug.Log("Token :"); 
     Debug.LogFormat("{0}", PlayGamesPlatform.Instance.GetAccessToken()); 
     Debug.Log("End Of Token"); 
    } 
}); 

但是你必須給客戶端ID添加到您的谷歌播放服務Unity插件。

+0

感謝您的回覆。我已經在Android配置中添加了客戶端ID,但PlayGamesPlatform.Instance.GetAccessToken()仍然是空的 - 你知道我可能需要做的其他事情嗎? – smokiespartakus

+0

您需要鏈接一個Web應用程序,然後添加Web客戶端ID而不是Android應用程序客戶端ID。請注意,從服務器獲取令牌需要一段時間,有時在您第一次調用GetAccessToken()時不會打印任何內容。 – AminSojoudi

+0

嗨,我相信我有這個類似的問題,但我認爲回調是爲了解決這個問題? http://stackoverflow.com/questions/37214979/google-play-services-with-unity3d-token –

0

PlayGamesPlatform.Instance.GetToken()會給你一個字符串標記,但可能需要一段時間才能下載,甚至幾秒鐘。如果應用程序設置正確,則應在一段時間後填充。繼續輪詢它是否爲空或空,並且它最終應該產生一個有效的標記。令牌只有1小時有效。

+0

我試圖使用IEnumerator和while循環來檢查訪問令牌是否爲null,但不斷訪問令牌即使在我等了5分鐘之後,仍然爲空: – Bhaskar

0

爲了代表當前播放器訪問後端Web服務器上的Google API,您需要從客戶端應用程序獲取驗證碼並將其傳遞到您的Web服務器應用程序。然後可以將此代碼交換爲訪問令牌以調用各種AP​​I。有關此流程的更多詳細信息,請參閱:https://developers.google.com/identity/sign-in/web/server-side-flow

獲取驗證碼:1.在Play遊戲控制檯中配置與您的遊戲鏈接的Web應用程序的Web客戶端Id。 2.調用PlayGamesPlatform.GetServerAuthCode()來獲取代碼。 3.將此代碼傳遞給您的服務器應用程序。

我能夠獲得AuthCode,並將此代碼提供給服務器,並且它們生成訪問令牌並對我的帳戶進行身份驗證。

相關問題