我已经尝试了所有内容,但是我无法使用Authentication:Bearer
标头使用Google Cloud Endpoints访问API。根据云端点文档:
出于安全原因,当您使用身份验证令牌发送请求时,我们建议您将令牌放在授权中:持票人头。
它还说:
如果您在发送请求时无法使用标题,则可以将身份验证令牌放入称为access_token的查询参数中。
我可以在我的URL中使用access_token=" +idToken
完美访问API。但是,当我尝试以这样的身份验证标头发送HTTP请求时:
const url =
"https://<PROJECTNAME>.appspot.com/getbalance";
axios
.get(url,{headers:{'Authentication':'Bearer '+idToken}})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.log(error);
});
我得到此错误:
JWT validation failed: Missing or invalid credentials
在查询参数中发送令牌与在标题中发送一样安全?
您的代码示例显示您设置auth enterication 标题,而不是auth ORIAGY header。您通常不应使用查询参数,因为它可能会在云控制台中登录。
使用"授权:承载"时,您需要使用通过OAuth 2.0 Authentication获得的访问令牌。
如果您再次使用Oauth游乐场,则可以说明这一点。
请记住,如果您想使用OAuth Playground访问Firebase数据库,则需要在操场屏幕右上方的Gear Icon上配置Firebase Project的客户ID和客户端秘密。还要确保使用这些范围:
-
https://www.googleapis.com/auth/userinfo.email
-
https://www.googleapis.com/auth/firebase.database
完成所有步骤后,您将能够使用授权标头和获得的访问令牌提出REST请求。