2017-05-06 50 views
0

我有一個叫做Cloud Endpoints後端服務的Android應用程序(遊戲)。該應用程序可讓您使用Facebook,Google,Twitter或自定義遊戲帳戶「登錄」。這提取他們的電子郵件,我在後端使用它來查找字符。如何在沒有用戶Google登錄的情況下在Android上致電Google Cloud Endpoints?

我的遊戲的iOS版本使用生成的客戶端庫調用我的Cloud Endpoints服務,其中一些應用程序憑據由Cloud Endpoints設置過程提供。用戶無需登錄Google帳戶即可進行這些通話 - 他們可以登錄到Facebook或在某些情況下(例如查看排行榜)登錄。不知何故,雲終端客戶端存根使用我的應用程序的憑據來授權我的應用程序。

對於Android,設置似乎要求具有非空帳戶名的GoogleAccountCredential。據我所知,這意味着用戶必須通過(Google)登錄流程。這不利於讓他們用Facebook登錄的目的。

我的服務存根初始化看起來是這樣的:

myAudience = "server:client_id:" + getStringResource(R.string.google_webapp_client_id); 
credential = GoogleAccountCredential.usingAudience(myAudience); 
if (credential.getSelectedAccountName() == null) { 
    chooseAccount(); // Calls startActivityForResult with credential.newChooseAccountIntent(). 
} 
myApiService = new MyApiService.Builder(AndroidHttp.newCompatibleTransport(), new AndroidJsonFactory(), credential); 

這只是正常 - 但它要求用戶登錄到谷歌的帳戶,以使服務調用。

有沒有一種方法可以在不需要Google帳戶登錄的情況下從Android進行授權的Cloud Endpoints調用,就像iOS上的情況一樣?我只是想讓它使用爲我的應用程序生成的任何私有應用程序憑據,但我不知道如何以這種方式構建證書。

回答

0

Cloud Endpoints爲您的API後端提供身份驗證。端點「驗證」/「驗證」JWT,但它不會「生成」JWT。通常,想要允許來自不同身份提供商(例如Google,Facebook)的登錄的iOS或Andriod應用使用Auth0或Firebase來生成最終用戶JWT。

Cloud端點安裝過程中提供的應用程序憑據用於在部署Endpoints服務或代表Cloud端點API本身時對API生成器進行身份驗證。他們不代表試圖訪問Endpoints API的最終用戶。

相關問題