У меня есть API конечных точек, развернутый в App Engine. У меня нет проблем с использованием Google API Explorer для запросов к API-методам, для которых НЕ требуется вход в систему. URL-адрес, который я использую для этого:
https://developers.google.com/apis-explorer/?base=https://[MY_APP_ID].appspot.com/_ah/API
Где я застрял, вызывается методы API, которые требуют входа пользователя в систему, например:
@ApiMethod(name = "config.get",
clientIds = {"[MY_CLIENT_ID].apps.googleusercontent.com", "com.google.api.server.spi.Constant.API_EXPLORER_CLIENT_ID"},
audiences = {"[MY_APP_ID].appspot.com"},
scopes = {"https://www.googleapis.com/auth/userinfo.email"})
public Config getConfig(User user) throws OAuthRequestException {
log.fine("user: " + user);
if (user == null) {
throw new OAuthRequestException("You must be logged in in order to get config.");
}
if (!userService.isUserAdmin()) {
throw new OAuthRequestException("You must be an App Engine admin in order to get config.");
}
...
В API-интерфейсе API есть верхний правый переключатель, который при щелчке позволяет указать области и разрешить. Я делаю это с проверкой только области userinfo.email. Это не имеет значения. Ответ, который я получаю от моего звонка:
503 Service Unavailable
- Show headers -
{
"error": {
"errors": [
{
"domain": "global",
"reason": "backendError",
"message": "java.lang.IllegalStateException: The current user is not logged in."
}
],
"code": 503,
"message": "java.lang.IllegalStateException: The current user is not logged in."
}
}
Назад, когда конечные точки находились в фазе доверенного тестера, я помню, что на игровой площадке OAuth2 был ручной шаг, чтобы получить токен идентификатора вместо токена доступа или некоторую вещь. Если это все еще необходимо, любое упоминание об этом, похоже, исчезло из документов Endpoints сейчас, и теперь я вижу способ поменять токены в API-интерфейсе.