Google api 如何在没有api库的情况下从Google获得访问令牌?

Google api 如何在没有api库的情况下从Google获得访问令牌?,google-api,elixir,google-oauth,google-indexing-api,Google Api,Elixir,Google Oauth,Google Indexing Api,我正在从事一个Elixir Phoenix web项目,我想与Google的索引API进行交互 谷歌使用OAuth2对api请求进行身份验证,实际上在这方面有相当的优势 但它只解释了使用Python、Java、PHP或JS中支持的库之一的过程 我想自己发出HTTP请求来检索该访问令牌。但是请求格式(包括头或参数)没有文档记录,我甚至无法从库的源代码中找到 我曾尝试在Postman中使用“OAuth 2.0”请求类型请求(以及其他符合条件的URL)。 但这一切都只是猜测和尝试。所有的研究都没有帮助

我正在从事一个Elixir Phoenix web项目,我想与Google的索引API进行交互

谷歌使用OAuth2对api请求进行身份验证,实际上在这方面有相当的优势

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

我想自己发出HTTP请求来检索该访问令牌。但是请求格式(包括头或参数)没有文档记录,我甚至无法从库的源代码中找到

我曾尝试在Postman中使用“OAuth 2.0”请求类型请求(以及其他符合条件的URL)。
但这一切都只是猜测和尝试。所有的研究都没有帮助。

有一些有用的说明,包括HTTP/Rest示例。每个步骤都有完整记录的各个参数。以下是一些有用的摘录

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

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
GET /drive/v2/files HTTP/1.1
Authorization: Bearer <access_token>
Host: www.googleapis.com/
请求访问令牌。例如:

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
GET /drive/v2/files HTTP/1.1
Authorization: Bearer <access_token>
Host: www.googleapis.com/
使用API。例如:

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
GET /drive/v2/files HTTP/1.1
Authorization: Bearer <access_token>
Host: www.googleapis.com/
GET/drive/v2/files HTTP/1.1
授权:持票人
主持人:www.googleapis.com/

有一些有用的说明,包括HTTP/Rest示例。每个步骤都有完整记录的各个参数。以下是一些有用的摘录

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

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
GET /drive/v2/files HTTP/1.1
Authorization: Bearer <access_token>
Host: www.googleapis.com/
请求访问令牌。例如:

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
GET /drive/v2/files HTTP/1.1
Authorization: Bearer <access_token>
Host: www.googleapis.com/
使用API。例如:

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
GET /drive/v2/files HTTP/1.1
Authorization: Bearer <access_token>
Host: www.googleapis.com/
GET/drive/v2/files HTTP/1.1
授权:持票人
主持人:www.googleapis.com/

非常感谢!我在《邮递员》上试过了,效果不错。但是,当获取授权代码时,我如何直接获取代码,而不是重定向到Google允许/拒绝html界面?我不请求用户的许可。这是我自己的Google开发者帐户,服务器应该能够自己完成整个过程。你不能。OAuth就是使用第三方进行身份验证,而不用自己接收用户的凭据。嗯,好的。。。但是我该如何让我的服务器使用索引API呢?为什么你要让你的用户登录他们的谷歌账户,让我的网站被谷歌索引?你明白了吗?这一切对我来说毫无意义。而且,谷歌支持的库使用OAuth,它们可以在服务器端使用OAuth,我明白了。这些文件相当混乱。在这种情况下,您需要创建一个服务帐户,并使用该帐户获得一个访问令牌。从您链接的文档来看,您似乎可以使用预共享密钥作为服务帐户进行身份验证,而不是执行正常的登录流。但你是对的,他们没有提供HTTP示例。看来你唯一的选择就是看看其他库都做了些什么:/非常感谢!我在《邮递员》上试过了,效果不错。但是,当获取授权代码时,我如何直接获取代码,而不是重定向到Google允许/拒绝html界面?我不请求用户的许可。这是我自己的Google开发者帐户,服务器应该能够自己完成整个过程。你不能。OAuth就是使用第三方进行身份验证,而不用自己接收用户的凭据。嗯,好的。。。但是我该如何让我的服务器使用索引API呢?为什么你要让你的用户登录他们的谷歌账户,让我的网站被谷歌索引?你明白了吗?这一切对我来说毫无意义。而且,谷歌支持的库使用OAuth,它们可以在服务器端使用OAuth,我明白了。这些文件相当混乱。在这种情况下,您需要创建一个服务帐户,并使用该帐户获得一个访问令牌。从您链接的文档来看,您似乎可以使用预共享密钥作为服务帐户进行身份验证,而不是执行正常的登录流。但你是对的,他们没有提供HTTP示例。您唯一的选择似乎是看看其他库的功能:/