401未经授权-Chrome应用程序Oauth调用谷歌云功能
我是这样说的: 但它不起作用。当我调用云函数时,我得到401错误。在请求头中添加授权:承载“访问令牌”。尽管这里的另一个问题[1]指出应该使用ID_令牌。我试着通过旋度,但有相同的401错误401未经授权-Chrome应用程序Oauth调用谷歌云功能,oauth,google-cloud-functions,google-chrome-app,Oauth,Google Cloud Functions,Google Chrome App,我是这样说的: 但它不起作用。当我调用云函数时,我得到401错误。在请求头中添加授权:承载“访问令牌”。尽管这里的另一个问题[1]指出应该使用ID_令牌。我试着通过旋度,但有相同的401错误 chrome.identity.getAuthToken({interactive: true}, function(token) { var dat = { "user_email":email_id, "user_id":user_id }; $.ajax({
chrome.identity.getAuthToken({interactive: true}, function(token) {
var dat = {
"user_email":email_id,
"user_id":user_id
};
$.ajax({
type: "POST",
data:dat,
dataType: 'json',
url:str,
contentType: "application/json",
error: function (xhr, status, error) {
console.log(xhr)
}, success: function (data, status, xhr) {
console.log('Success!' +data + status);
},
headers:{
'x-goog-project-id': 'xxxxxxxxxxxxx',
'Authorization': 'Bearer ' + token,
'Content-Type':'application/json',
'Accept': 'application/json'
}
});
});
[1] 您提到的教程使用“访问令牌”使用Google People API和Chrome Identity API访问用户的Google联系人 如果您想访问不允许未经验证的调用的谷歌云功能,您必须使用ID\u令牌 对于测试,您可以使用
--role=“roles/cloudfunctions.invoker”
创建一个服务帐户,然后创建一个key.json
文件并导出GOOGLE\u应用程序\u凭证
env变量
最后,您可以使用:
curl "https://us-central1-your-project.cloudfunctions.net/yourfunction"
# Error 403 (Forbidden)
curl "https://us-central1-your-project.cloudfunctions.net/yourfunction" -H "Authorization: bearer $(gcloud auth print-identity-token)"
#Success
我放弃了这一点,因为在Chrome应用程序中使用oauth调用云函数并没有直接的解决方案。另一种可行的解决方案是通过API密钥进行身份验证。这就是使用云端点的云函数 我遵循了这里的逻辑:
但需要注意的是,API键的旋转应该定期自动完成。感谢您的澄清。但是,我如何在chrome扩展应用程序(Javascript)中使用服务帐户?我建议遵循本教程,然后阅读我查看的教程,但它不包括chrome扩展和服务帐户之间的身份验证部分。我也已经检查了OpenID连接文档,但是没有一个应用于Chrome扩展,因为它不被认为是Web应用程序。看起来这不是一个简单的任务,这里是一个关于它的讨论。