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

时间:2019-08-06 16:07:23

标签: google-api elixir google-oauth google-indexing-api

我正在研究一个Elixir Phoenix网站项目,我想与Google的Indexing API进行交互。

Google使用OAuth2对api请求进行身份验证,实际上对此有不错的documentation

但是它仅说明使用Python,Java,PHP或JS中受支持的库之一的过程。

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

我尝试在邮递员中使用“ OAuth 2.0”请求类型请求https://accounts.google.com/o/oauth2/token(还有其他合格的URL)。 但这仅仅是猜测和尝试。所有的研究都无济于事。

1 个答案:

答案 0 :(得分:2)

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/