java - 无法验证 : No JSON input found

标签 java json scala google-translate

我必须将文本从一种语言翻译成另一种语言。我正在使用Google 翻译 API。 但是,我无法进行身份验证。我想通过代码提供身份验证信息,我不想使用全局变量自动进行身份验证(我仍然想知道这是一个好主意)。

虽然有一个简单的方法来设置 API key ,但没有方法以简单的方式指定凭据。因此,我决定使用创建服务 key 时获取的 JSON 进行身份验证。

{
"type": "service_account",
"project_id": "toto",
"private_key_id": "tata",
"private_key": "titi",
"client_email": "tete",
"client_id": "tutu",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/toto"
}

然后,在 scala 代码中:

 val cred = GoogleCredentials.fromStream(JSON_AUTHENTICATION_INPUT_STREAM)
 TranslateOptions.newBuilder().setCredentials(cred)

当然,我收到以下错误:

 java.lang.IllegalArgumentException: no JSON input found
at com.google.api.client.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:125)
at com.google.api.client.util.Preconditions.checkArgument(Preconditions.java:49)
at com.google.api.client.json.JsonParser.startParsing(JsonParser.java:223)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:380)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:355)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:87)
at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:81)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.fromStream(GoogleCredential.java:250)
at com.google.api.client.googleapis.auth.oauth2.GoogleCredential.fromStream(GoogleCredential.java:226)
at services.TranslatorBaseImpl.<init>(Translator.scala:58)

那又怎么样? JSON 验证不起作用?如何通过代码进行身份验证?

我在官方文档中搜索了几个小时,但对于这样的......高级......案例来说毫无用处。

感谢您的回答, 亲吻

最佳答案

经过更多调查,我成功地使用 ServiceAccountCredentials 而不是 GoogleCredentials。 然而,即使我能让它工作,这是 Not Acceptable 。 第一个是第二个的子类。文档明确指出:

static GoogleCredentials fromStream(InputStream credentialsStream)
-> Returns credentials defined by a JSON file stream.

这应该可行,写吗? 相同的代码,相同的输入,相同的conf,但契约(Contract)未填写....

关于java - 无法验证 : No JSON input found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42932401/

相关文章:

java - 我是否应该手动返回 ReSTLet 中缓存请求 (ETag) 的 304 响应?

java - 在 Java JDBC 中将高分保存到数据库中

javascript - 删除 JavaScript 中 JSON 对象的重复键,以不同的方式构造 JSON

javascript - 在 React JS 的文本字段中打印 JSON 数据

scala - Shapeless:检查多态函数的类型约束

scala - 我可以在另一个多项目中有一个 sbt 多项目吗?

java - 为什么 Spring @Configuration 类继承没有按预期工作?

java - 如何获取 HashMap 值的属性?

php - 在 &lt;script&gt; 标签中使用 PHP?

java - 如何让 Syslogging 在 JVM 上运行?