如何在没有用户Google登录的情况下在Android上致电Google Cloud Endpoints?

问题描述:

我有一个叫做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上的情况一样?我只是想让它使用为我的应用程序生成的任何私有应用程序凭据,但我不知道如何以这种方式构建证书。

Cloud Endpoints为您的API后端提供身份验证。端点“验证”/“验证”JWT,但它不会“生成”JWT。通常,想要允许来自不同身份提供商(例如Google,Facebook)的登录的iOS或Andriod应用使用Auth0或Firebase来生成最终用户JWT。

Cloud端点安装过程中提供的应用程序凭据用于在部署Endpoints服务或代表Cloud端点API本身时对API生成器进行身份验证。他们不代表试图访问Endpoints API的最终用户。