如何在 Google Cloud Endpoints Javascript 客户端中设置自定义标头?

Posted

技术标签:

【中文标题】如何在 Google Cloud Endpoints Javascript 客户端中设置自定义标头?【英文标题】:How to set a custom header in Google Cloud Endpoints Javascript Client? 【发布时间】:2014-02-06 15:25:04 【问题描述】:

我可以使用 javascript 客户端从 Google Cloud Endpoints 获取博客文章列表:

gapi.client.blog.posts.list().execute(function (resp) 
  console.log(resp);
);

但我需要在包含用户令牌(这可能是来自 Facebook 的访问令牌)的 Google Cloud Endpoints 请求中设置自定义标头值。我如何使用 Google 的 Javascript 客户端来做到这一点?我可以不使用 Google 的 Javascript 客户端来解决这个问题,但我宁愿使用它。

https://developers.google.com/appengine/docs/java/endpoints/consume_js https://developers.google.com/api-client-library/javascript/reference/referencedocs

编辑

看来我可以像这样传递自定义标头值:

gapi.auth.setToken(
    access_token: 'this is my custom value'
);

不过,这似乎不是一个好习惯。有没有更好的方法来做到这一点?

【问题讨论】:

遇到了同样的问题并放弃了 jQuery 的 JavaScript 客户端($.ajax 与 Endpoints 后端配合良好)。 setToken 有什么好运气吗? 能正常使用标题吗?这可行,但它在令牌之前附加了一个字符串“Bearer”,所以我必须做token = os.getenv('HTTP_AUTHORIZATION').split(" ")[1] 【参考方案1】:

您现在可以使用gapi.client.request 执行此操作,例如:

gapi.client.init(
    'clientId': 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
    'scope': 'your_scope'
).then(function() 
    return gapi.client.request(
        'path': 'http://path/to/your/endpoints/api',
        'headers':  'mycustomheader': 'myvalue' 
    )
).then(function(response) 
    console.log(response.result);
, function(reason) 
    console.log('Error: ' + reason.result.error.message);
);

另请参阅 Google API Javascript 客户端文档的 Getting Started 页面。

【讨论】:

【参考方案2】:

尝试正常使用标头,但获取令牌并在需要显示令牌的位置添加包含它的变量。

【讨论】:

以上是关于如何在 Google Cloud Endpoints Javascript 客户端中设置自定义标头?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud Configuration - 自动启用 Refresh Endpoint 和 Git 监控

从 Java Cloud Endpoint 生成 API 文档

Cloud Endpoint 和 API Gateway (GCP) 是不是支持 Websocket?

Android:如何在GMAIL上获取SSO的YOUR_AUTHENTICATION_ENDPOINT?

如何使用 Google PubSub 确认 (@google-cloud/pubsub)

如何在 Google.Cloud.PubSub.V1 SubscriberServiceApiClientBuilder 中配置频道选项