1

我正在尝试对需要 OAuth Bearer 令牌的 Uber API 端点进行客户端 JS 调用,例如/v1/me,但我收到一个错误,即Access-Control-Allow-Origin响应中不存在标头。

我已经成功获得了一个承载令牌(服务器端)以在 GET 请求的 Authorization 标头中使用。

在我的 Uber API 应用程序设置中,我将我的 Origin URI 设置为我的开发服务器 ( https://localhost:9000 )。

这是我如何调用/v1/me端点:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.uber.com/v1/me');
xhr.setRequestHeader("Authorization", "Bearer MY_BEARER_TOKEN");
xhr.send();

在 Chrome 开发者控制台中,我收到以下错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource

为了确保我的 Bearer 令牌有效,我使用 curl成功测试了它:

curl -H 'Authorization: Bearer MY_BEARER_TOKEN' 'https://api.uber.com/v1/me'

附带说明一下,我能够成功调用不需要 OAuth Bearer 令牌的 API 端点,例如/products/estimates/price使用 Authorization Token 标头,如下所示:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.uber.com/v1/products');
xhr.setRequestHeader("Authorization", "Token MY_SERVER_TOKEN");
xhr.send();

这让我相信问题不在于 Uber API 应用程序配置设置,例如不正确的 Origin URI。

最后一点,当我获得 OAuth 令牌时,我是从在我的开发服务器上运行的 Node Express 应用发出请求,地址为https://localhost:8080,这与我在https运行客户端 JS 应用的位置不同://localhost:9000。然而,从同一个端口发出请求并没有解决问题。

有任何想法吗?谢谢!

4

2 回答 2

2

您是否在应用程序的任何地方使用 iFrame?当我要求将 iFrame 与通常不允许人们这样做的产品一起使用时,通常会出现这个问题。

于 2015-03-27T21:10:12.970 回答
1

在向 Uber 技术支持发送电子邮件后,问题是他们没有正确设置 CORS。截至昨天,/v1/me 端点现在正在为我工​​作,而我的应用程序配置没有任何更改。

于 2015-03-27T21:32:15.873 回答