仅限访问我的Android应用程序的端点

时间:2017-06-01 15:01:24

标签: android api google-app-engine google-cloud-platform

我是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

我在网上搜索了很多,并阅读了博客和主题,但我无法使其发挥作用。这可能是一件事吗?我究竟做错了什么?

1 个答案:

答案 0 :(得分:0)

您需要按照adding authorization to the API backend上的文档指南进行操作。在此过程中,您将定义有权使用您的端点的客户端列表。

完成后,您可以按照Android上的making authenticated calls指南进行操作。