1

我正在开发一个 Elixir Phoenix 网络项目,我想在其中与 Google 的索引 API 进行交互。

Google 使用 OAuth2 对 api 请求进行身份验证,并且实际上有一个不错的文档

但它只解释了使用 Python、Java、PHP 或 JS 中支持的库之一的过程。

我想自己发出 HTTP 请求以检索该访问令牌。但是请求格式(包括标头或参数)没有记录,我什至无法从库的源代码中弄清楚。

我尝试在 Postman 中使用“OAuth 2.0”请求类型请求https://accounts.google.com/o/oauth2/token(还有其他符合条件的 URL)。但这一切都只是猜测和尝试。所有的研究都没有帮助。

4

1 回答 1

3

在Using OAuth 2.0 for Web Server Applications中有一些有用的说明,包括 HTTP/Rest 示例。每个步骤都有完整记录的各个参数。这里有一些有用的摘录。

将用户发送到 Google 的 OAuth 2.0 服务器。示例网址:

https://accounts.google.com/o/oauth2/v2/auth?
 scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly&
 access_type=offline&
 include_granted_scopes=true&
 state=state_parameter_passthrough_value&
 redirect_uri=http%3A%2F%2Foauth2.example.com%2Fcallback&
 response_type=code&
 client_id=client_id

检索授权代码(您的域)。例子:

https://oauth2.example.com/auth?code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7

请求访问令牌。例子:

POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded

code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=your_client_id&
client_secret=your_client_secret&
redirect_uri=https://oauth2.example.com/code&
grant_type=authorization_code

使用 API。例子:

GET /drive/v2/files HTTP/1.1
Authorization: Bearer <access_token>
Host: www.googleapis.com/
于 2019-08-06T22:20:20.993 回答