我是新手使用Google Can Platform。
我尝试了Translation API的教程。出于某种原因,我想使用API-Key进行身份验证。但是API不接受JSON请求中的密钥,尽管它在HTTP查询参数中接受相同的密钥。
这是Google Translation API的限制吗?或者我有任何错误吗?
以下是我的尝试:
将API密钥作为查询参数传递时工作
$ curl -H 'Content-Type: application/json' 'https://translation.googleapis.com/language/translate/v2?key=xxxxxxxxxx' --data-binary @test.json
我的test.json是:
{
"q": "The quick brown fox jumped over the lazy dog.",
"source": "en",
"target": "es",
"format": "text"
}
结果是:
{
"data": {
"translations": [
{
"translatedText": "El rpido zorro marrn salt sobre el perro perezoso."
}
]
}
}
但出于某些安全原因,我不想通过查询字符串传递此API密钥。
为什么我不想使用查询字符串
具有敏感参数的URI不安全,因为它经常被记录或在某些情况下显示,而HTTP Header或HTTP正文则不会。
当然,使用更强的身份验证方法(服务帐户)对于安全性更好,但API密钥也是一些很好的解决方案,适用于某些用例,例如在遗留系统中嵌入等等。
在JSON请求中传递Api密钥时无法正常工作
我在请求JSON中设置了“key”项,但它没有用。它导致授权错误。
curl -H 'Content-Type: application/json' 'https://translation.googleapis.com/language/translate/v2' --data-binary @test.json
使用test.json:
{
"key": "xxxxxxxxxx",
"q": "The quick brown fox jumped over the lazy dog.",
"source": "en",
"target": "es",
"format": "text"
}
结果:
{
"error": {
"code": 403,
"message": "The request is missing a valid API key.",
"errors": [
{
"message": "The request is missing a valid API key.",
"domain": "global",
"reason": "forbidden"
}
],
"status": "PERMISSION_DENIED"
}
}
答案 0 :(得分:1)
我能找到的唯一工作示例是:
在URL中添加密钥,例如:
https://translation.googleapis.com/language/translate/v2?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
其余的都在POST中完成。