我不熟悉Google App Engine,我试图制作第一个引擎并将其连接到我的Android应用程序。我曾经使用过此教程为了走学习一下吧:仅限我的端点访问我的Android应用程序
https://cloud.google.com/endpoints/docs/frameworks/legacy/v1/java/helloendpoints-android-studio
我得到它的工作的罚款。我可以从我的android应用程序访问我的应用程序引擎,并获得想要的响应。问题是,我想限制我的API的端点到我的应用程序的用户只。
这是我的API方法(从教程中),至于现在,只要他们登录到任何Google帐户,每个人都可以访问我的api的资源管理器并执行其中的方法。
我希望用户能够只从我的应用程序执行此方法。
这是我的应用程序引擎的Java文件:
package com.example.Barda.myapplication.backend;
import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.api.server.spi.config.ApiNamespace;
import com.google.api.server.spi.response.UnauthorizedException;
import com.google.appengine.api.users.User;
import javax.inject.Named;
/**
* An endpoint class we are exposing
*/
@Api(
name = "myApi",
version = "v1",
clientIds = {Constants.ANDROID_CLIENT_ID},
audiences="firebase-wiki-race.appspot.com",
namespace = @ApiNamespace(
ownerDomain = "backend.myapplication.Barda.example.com",
ownerName = "backend.myapplication.Barda.example.com",
packagePath = ""
)
)
public class MyEndpoint {
/**
* A simple endpoint method that takes a name and says Hi back
*/
@ApiMethod(name = "sayHi")
public MyBean sayHi(@Named("name") String name) throws UnauthorizedException {
// if (user == null) throw new UnauthorizedException("User is Not Valid");
MyBean response = new MyBean();
response.setData("Hi, " + name);
return response;
}
}
这是常量类:
package com.example.Barda.myapplication.backend;
/**
* Contains the client IDs and scopes for allowed clients consuming your API.
*/
public class Constants {
public static final String ANDROID_CLIENT_ID = "*********************.apps.googleusercontent.com";
}
我已经用我的应用程序的SH-1和包名的ANDROID_CLIENT_ID
产生。
我已经在网上搜索了很多,并且阅读了博客和主题,但是我无法让它工作。这是一个可能的事情吗?我究竟做错了什么?
我是否必须使用已认证的呼叫才能允许来自我的应用的呼叫?我已阅读您发送的第一个链接,并且它在我的代码中。你确定第二个链接对于我想要做的事情是必要的吗? 此外,在第一个链接中写道:“对于Android应用程序,您必须在clientIds中提供其Android客户端ID和Web客户端ID”,但我没有Web客户端,只有Android应用程序。 –
是的,限制访问API的唯一方法是使用一种认证形式。这就是说你可以[创建服务帐户](https://cloud.google.com/iam/docs/creating-managing-service-accounts)并使用私钥对其进行身份验证(https:// cloud。 google.com/iam/docs/creating-managing-service-account-keys)。第二个链接中的代码只是举例说明了如何进行认证呼叫。最后,您需要在Android Audience的Android版本之上创建一组Web Client凭据,这是必需的。 –
我不知道我的Web客户端ID是什么,但我在这里找到了答案:https://stackoverflow.com/a/34158187/7483311它是我缺少的部分。我遵循这两个链接,它的工作。 –