Articles of 谷歌云端点

如何升级安装在.gradle文件夹中的appengine-java-sdk

当我构build我的Android Studio项目时,它说: ******************************************************** There is a new version of the SDK available. ———– Latest SDK: Release: 1.9.15 Timestamp: Tue Oct 21 21:33:59 EDT 2014 API versions: [1.0] ———– Your SDK: Release: 1.9.14 Timestamp: Thu Oct 16 16:07:33 EDT 2014 API versions: [1.0] ———– Please visit https://developers.google.com/appengine/downloads for the latest SDK. 我注意到在我的home文件夹的.gradle文件夹中有一个appengine-java-sdk: 〜/ .gradle /应用服务引擎-SDK /应用服务引擎的Java-SDK-14年9月1日 […]

如何在Android的Cloud Endpoints构build器中禁用GZipContent

我想为Google Cloud Endpoints类禁用GZipContent,以便POST可以在本地开发服务器上工作。 最新的GPE版本生成此端点生成器: public static final class Builder extends AbstractGoogleJsonClient.Builder { public Builder(HttpTransport transport, JsonFactory jsonFactory, HttpRequestInitializer httpRequestInitializer) { super( transport, jsonFactory, …); } Google文档build议像这样使用它: Myendpoint.Builder endpointBuilder = new Myendpoint.Builder( AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential); 有谁知道如何禁用端点GZipContent? 谢谢。

validation我的“应用程序”Google云端点不是“用户”

我正在尝试的是将我的Android应用程序authentication到Google Cloud Endpoint。 基本上,端点应该只允许我的Android应用程序访问的方法,没有别的。 我做了这些事情 – 在Google云端控制台的Eclipse中使用我的SHA1值创build客户端ID。 在Google云端控制台中为我的端点项目创build一个Web客户端ID。 将这两个客户端ID添加到每个端点上提到的“@Api”中。 在端点方法中添加一个额外的“用户”参数。 重新生成并将后端部署到云。 但是,当我运行这个“用户”总是作为“空”来。 我正在努力寻找一个适当的工作方法来完成这一切。 我search了很多论坛,但没有任何适当的答案。 这里是另一个类似的post限制访问谷歌云terminal到Android应用程序 这是我使用的参考 – https://developers.google.com/appengine/docs/java/endpoints/auth 有没有人在这里做过? 我的主要目标是不允许未经身份validation的应用程序和外部世界访问端点,出于明显的安全原因。 我不想使用基于最终用户的身份validation,因为我想保持我的应用程序非常简单。

Google App Engine云terminal用户标识为空

我正在使用一个从这门课程 (稍作修改)的解决方法来获取userId,如果请求是从Android客户端发送的,则为空。 /** * This is an ugly workaround for null userId for Android clients. * * @param user A User object injected by the cloud endpoints. * @return the App Engine userId for the user. */ private static String getUserId(User user) { String userId = user.getUserId(); if (userId == null) { LOG.info("userId is null, […]

无法在Android项目中导入Google云端点客户端库类

我很难让Google Cloud Endpoints正常工作。 我有一个在GAE上运行的Python端点项目,它可以完美的使用API​​浏览器。 不过,我正在努力正确生成客户端库,并在我的Android应用程序中使用它。 我尝试了一些示例项目,每次都遇到相同的问题。 我无法从客户端库导入和使用模型类。 这就是我正在做的(对于这个例子,我将使用https://github.com/GoogleCloudPlatform/appengine-endpoints-helloendpoints-python中的helloworld api python示例) 解压缩示例代码 通过导航到文件夹并运行生成客户端库 <gae-sdk>\endpointscfg.py get_client_lib java helloworld_api.HelloWorldApi 将生成的文件夹解压缩并复制到eclipse中的项目的根目录下 在Eclipse中添加“your_app_id_appspot_com-helloworld-v1-20140310110152-java-1.17.0-rc-sources.jar”来构buildpath(右键单击JAR> Build Path> Add to Build Path) 在这个阶段,我可以导入com.appspot.your_app_id.helloworld.model.*但是我不能导入com.appspot.your_app_id.helloworld.model.Greeting 任何人都可以在这里发生什么事情吗? 我尝试了许多不同的方法来使这个工作,但每次都有同样的问题。 非常感谢, 汤姆

Android + App引擎:user.getUserID()在端点中为null

我有一个与GAE服务器的Android应用程序。 我试图按照developers.google.com上描述的方式对用户进行身份validation,我将用户参数添加到端点方法等。我得到一个不为null的用户,但是此方法getUserId()返回null。 它类似于这个,而不是老问题: 函数User.getUserId()在云端点api中返回null为非空的用户对象但我仍然不知道如何解决它。 你如何处理这个错误? 你有没有遇到过? 在Android客户端这里是我做了什么(简化): credentials = GoogleAccountCredential.usingAudience(getApplicationContext(), "server:client_id:" + WEB_CLIENT_ID); credentials.setSelectedAccountName(accountName); WarriorEntityEndpoint.Builder endpointBuilder = new WarriorEntityEndpoint.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credentials); warriorEntityEndpoint = endpointBuilder.build(); new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void… params) { // TODO Auto-generated method stub try { warriorEntityEndpoint.getWarrior().execute(); } catch (Exception e) { } return null; } }.execute(); 在GAE上: […]

为Google Cloud Endpoint API设置TLS代理

我一直在API浏览器(本地主机)查看我的Google App Engine端点API没有问题,现在得到这个: 它充分说: 您正在探索通过HTTP而不是HTTPS描述或提供的API。 这是不安全的,可能会被浏览器阻止。 要解决这个问题,请为您的API设置一个TLS代理。 或者,您可以告诉您的浏览器在本网站上允许通过HTTP进行活动内容(在Chrome上,单击URL栏中的屏蔽),但这不会提高安全性或closures此消息。 这是我在端点中的API方法之一: @ApiMethod( name = "insert", path = "movie", httpMethod = ApiMethod.HttpMethod.POST) public Movie insert(Movie movie) throws UnauthorizedException { … } 由于我不知道是什么原因导致这个突然,我不知道还有什么显示。我试图更新我的浏览器(火狐,歌剧,铬)没有运气。

如何将Google App Engine端点API访问限制为仅限我的Android应用程序?

我是一名Android开发人员,为我的应用程序构build了我的第一个Google App Engine(Java)后端。 我不希望其他人访问这个API比我的应用程序。 (我计划使用App引擎来validation我的Android应用程序中的InApp购买)。 我的数据与用户无关,因此我不希望用户能够访问我的API,即使他们使用他们的Google帐户login(在Web或Android设备上)。 我遵循了“在API后端指定授权客户端”( https://developers.google.com/appengine/docs/java/endpoints/auth )中提到的步骤,例如生成客户端ID并将其添加到@Api(clientIds和观众)除了“添加用户参数” – 因为我不需要用户身份validation。 然后我部署了App引擎,我仍然可以通过API资源pipe理器访问API( https://your_app_id.appspot.com/_ah/api/explorer )(我还没有添加API_EXPLORER客户端ID) 在添加客户端ID之前,我使用由端点库构build的APK进行了testing,并且仍然可以访问该API。 是否必须向所有端点API添加“用户参数”? 达到我的目的(限制API只有我的Android应用程序)。 我可以从Android客户端传递null作为userAccount名称,并忽略服务器上的用户参数值(因为它将为空)? 这将确保API只能从我的android应用程序访问(因为客户端ID是为我的软件包名称和APK的SHA1生成的?) 我应该使用类似于服务帐户的东西吗? 文档中提到,对于Android,必须添加Android和Web客户端ID,并且受众必须与Web客户端ID相同。 这是否可以访问任何其他Web客户端? 我可以跳过提到的Web客户端ID,仍然达到我的目的? 感谢您的时间和帮助。 ……更新我的进一步调查… 我做了以下几点: 将用户参数添加到后端的API – 但没有检查空值。 仍然可以访问API,而无需传递任何凭据(从AndroiddebuggingAPK和API浏览器) 然后,我试了一下 mCredential = GoogleAccountCredential.usingAudience(this,“server:client_id:”+ WEB_CLIENT_ID); mCredential.setSelectedAccountName(NULL); 并将此凭据传递给API构build器(如其他一些post中所build议的),导致致命exception。 所以,我们不能传递空帐户名称。 我可以在不使用OAuth的情况下使用API​​ Explorer调用API。 但是,当我启用OAuth,它给出了错误,说这个客户端ID是不允许的! (我还没有在client_ids {}中添加com.google.api.server.spi.Constant.API_EXPLORER_CLIENT_ID) 然后,如果用户为空,我添加了在后端抛出OAuthRequestException的代码。 这导致API Explorer无OAuth出错。 它在将API_EXPLORER_CLIENT_ID添加到client_ids之后启用OAuth) 添加了代码,从我的Android应用程序传递有效的用户帐户名称(电子邮件)。 然后,我只能使用我的发行版APK访问API。 即使debuggingAPK也会有exception! – 这是我所期望的。所以,我认为没有其他的Android应用程序将能够访问这个API。 所以,不检查后端API上的空用户是一个坏主意(如其他职位build议)。 这是一样好,不提及任何client_ids和没有用户参数。 现在唯一的问题是:如果有人能够从APK中找出WEB_CLIENT_ID,他们是否能够使用它来构build一个Web客户端来访问我的API(我没有提到客户端在代码中的任何地方的秘密。所以我觉得这是不可能的)。 […]

在没有Google帐户login的情况下,将您的客户端authentication为Cloud Endpoints

我一直在进行广泛的研究,关于如何使用云terminal对您的客户端(Android,iOS,Web-app)进行身份validation, 而不要求您的用户按照文档所示的方式使用他们的Google帐户login。 原因是我想保护我的API或“locking”到我指定的客户端。 有时我会有一个没有用户login的应用程序。 我不想让我的用户现在login,所以我的API是安全的。 或者其他时候,我只想在网站上pipe理自己的用户,而不是使用Google+,Facebook或任何其他login身份validation。 首先,请让我先介绍一下如何使用文档中指定的Google帐户login名,通过您的Cloud Endpoints APIvalidation您的Android应用程序。 之后,我会告诉你我的发现和我需要帮助的解决scheme的潜在领域。 (1)指定有权向您的API后端发出请求的应用程序的客户端ID(clientIds),以及(2)将User参数添加到所有需要授权保护的公开方法。 public class Constants { public static final String WEB_CLIENT_ID = "1-web-apps.apps.googleusercontent.com"; public static final String ANDROID_CLIENT_ID = "2-android-apps.googleusercontent.com"; public static final String IOS_CLIENT_ID = "3-ios-apps.googleusercontent.com"; public static final String ANDROID_AUDIENCE = WEB_CLIENT_ID; public static final String EMAIL_SCOPE = "https://www.googleapis.com/auth/userinfo.email"; } import com.google.api.server.spi.auth.common.User; //import for […]

Google Cloud Endpoints和用户的身份validation

我目前刚进入AppEngine世界,并希望使用云端点为我正在开发的移动应用程序创build后端。 我现在的问题之一是关于用户的身份validation。 我一直关注App Engine上的Udacity的MOOC,他们教会我们如何使用Google帐户来validation用户的API请求。 在后端,我们只需要添加一个User参数给我们的方法,并检查用户是否login。据我所知,这个用户参数是由App Engine根据请求的Authorization头生成的。 ( 可能需要一些确认 ) 现在,有一堆我不确定要理解的东西,这在MOOC上没有得到很好的解释。 现在,我想知道这是否与其他OAuth计划兼容,除了Google? 所以,如果我想实现Facebook身份validation,我会只通过Facebook访问令牌? 从我search的内容来看,使用Android上的Facebook SDK将导致我能够生成一个用户访问令牌,它可以将我的用户识别为脸书 。 发送到我的后端后,我想要检查它与Facebook的有效性,如果它是有效的,创build一个新的用户到我的应用程序。 现在,我也想生成一个新的令牌,标识我的应用程序的用户。 我需要做些什么来做到这一点?