Как исправить недопустимую область видимости (400 неверных запросов) с помощью API Google ML
Я попытался отправить запрос на прогноз с помощью Java google ml api. Мой контент представляет собой массив int (это из изображения), я создаю JsonHttpContent, но не уверен, что это способ выполнить запрос прогнозирования. У меня есть json-ключ учетных данных локально. Вот просьба:
def main(args: Array[String]): Unit = {
implicit val formats = DefaultFormats
val credentials = "creds.json"
val httpTransport = GoogleNetHttpTransport.newTrustedTransport
val jsonFactory = new JacksonFactory
val discovery = new Discovery(httpTransport, jsonFactory, null)
val api = discovery.apis.getRest("ml", "v1").execute
val method = api.getResources.get("projects").getMethods.get("predict")
val param = new JsonSchema
val projectId = "ml-training"
val modelId = "my-model"
param.set("name",s"""projects/$projectId/models/$modelId""")
val url = new GenericUrl(UriTemplate.expand(api.getBaseUrl + method.getPath, param, true))
val contentType = "application/json"
val payload = Map("instances" -> Array(255,255,255))
val content = new JsonHttpContent(jsonFactory,payload)
println(write(content))
val credential = GoogleCredential.fromStream(new FileInputStream(credentials))
val requestFactory = httpTransport.createRequestFactory(credential)
val request = requestFactory.buildRequest(method.getHttpMethod, url, content)
val response = request.execute.parseAsString
println(response)
}
Вот ошибка:
Exception in thread "main" com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request
{
"error" : "invalid_scope",
"error_description" : "Bad Request"
}
Я не понимаю источник моей проблемы. Это из содержания запроса? Заранее спасибо
1 ответ
Вот решение, которое я нашел:
val credentials = GoogleCredentials.fromStream(new FileInputStream(creds)).createScoped(
java.util.Arrays.asList("https://www.googleapis.com/auth/cloud-platform")
)
credentials.refreshIfExpired()
val accessToken = credentials.getAccessToken
И используйте accessToken внутри заголовка и http-вызова