3

我想从 javascript 客户端调用 /search api。为此,我读到我需要一个 oauth2 访问令牌。

按照谷歌指南,我必须去谷歌云控制台,但没有谷歌云打印服务可以订阅。

我应该使用什么服务来获取 API 密钥?

4

1 回答 1

3

我最近开始熟悉 Google Cloud Print 和 OAuth,所以我不太了解。我开始的方式与你似乎开始的方式相同。也就是说,通过尝试向/search. 我将描述什么对我有用。

在 Cloud Console 中创建项目后,我转到APIs & auth > Credentials菜单项并为“Web 应用程序”应用程序类型创建了一个新的客户端 ID。

对于创建的客户端 ID,我适当地修改了Javascript 起源重定向 URI

然后,我在我的 Web 应用程序中向以下 URL 添加了一个锚点,以便将用户定向到身份验证页面。

https://accounts.google.com/o/oauth2/auth?
response_type=token&
client_id=<application-client-id>&
scope=https://www.googleapis.com/auth/cloudprint&
redirect_uri=<application-redirect-uri>

client_id - 应该是您在 Google Cloud Console 中注册的客户端 ID 的 client_id 值。

response_type - 此值取决于您计划开发的应用程序类型。对于客户端应用程序(JavaScript 应用程序),令牌应该是值。有关此主题的更多信息,请参阅https://developers.google.com/accounts/docs/OAuth2

redirect_uri - 应该是您在 Google Cloud 控制台中注册的客户端 ID 中指定的重定向 URI 值。这是用户在通过身份验证时将被重定向的地方。

范围- 我将其设置为https://www.googleapis.com/auth/cloudprint. 此值将要求您的应用程序有权管理与正在验证的用户帐户关联的云打印机。

现在,我陷入困境的部分是尝试使用 JavaScript (AJAX) 向https://www.google.com/cloudprint/search发出 HTTP 请求。当我尝试向 /search 发出 HTTP 请求时,我得到了以下响应。

OPTIONS https://www.google.com/cloudprint/search No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.

似乎处理/search接口请求的实体(服务器)未配置为使用 CORS?如果我错了,请纠正我。

现在,我验证我能够成功进行身份验证的方法是尝试/search在 Java 程序中发出请求。我使用了在 java 程序中使用我的 Web 应用程序进行身份验证时获得的 OAuth 令牌,并使用Authorization: OAuth <token>标头集发出请求)并且请求成功。

于 2014-01-06T03:16:47.860 回答