我不熟悉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它是我缺少的部分。我遵循這兩個鏈接,它的工作。 –