我是Google App Engine的新手,我正在尝试制作我的第一个引擎并将其连接到我的Android应用。我已经浏览了本教程以了解它:
https://cloud.google.com/endpoints/docs/frameworks/legacy/v1/java/helloendpoints-android-studio
我让它工作正常。我可以从我的Android应用程序访问我的应用程序引擎,并得到想要的响应。问题是,我想将我的API的端点限制为我的应用程序的用户。
这是我的API方法(来自教程),就目前而言,每个人都可以访问我的api的资源管理器并执行其中的方法,只要他们登录到任何Google帐户。
我希望用户只能从我的应用中执行此方法。
这是我的app引擎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
。
我在网上搜索了很多,并阅读了博客和主题,但我无法使其发挥作用。这可能是一件事吗?我究竟做错了什么?
答案 0 :(得分:0)
您需要按照adding authorization to the API backend上的文档指南进行操作。在此过程中,您将定义有权使用您的端点的客户端列表。
完成后,您可以按照Android上的making authenticated calls指南进行操作。