使用HTTP获取 OAuth 2.0 access tokens(Google)

请求access_token流程

这里写图片描述

1.搭建开发环境

  1. 申请Google账号
  2. 登录Google账号,进入创作者工作室。进入直播栏目,打开个人账户直播功能
  3. 进入google develop console
    a. 创建新项目
    b. 启用YouTube Data API v3
    c. 创建凭据,Oauth 客户端 ID,选择网页客户端。输入名称,重定向URL,点击创建。完成以后就可以获取一个json文件。里面就有需要的secrete_id。保存该json文件,会放入Android 工程中。

2.请求 code

需要的参数:

  • client_id
  • redirect_uri
  • response_type
  • scope

其中,client_id是在第一步中创建凭据的时候得到的,向Google 授权服务器发送如下信息则可以获取到code

https://accounts.google.com/o/oauth2/auth?
client_id=1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com&
redirect_uri=http%3A%2F%2Flocalhost%2Foauth2callback&
scope=https://www.googleapis.com/auth/youtube&
response_type=token

使用浏览器访问到上面的网址,点击确认授权以后,则可以获取一段
code=code=4/v6xr77ewYqhvHSyW6UJ1w7jKwAzu

3.请求access token

通过向Google发送post 请求,来获得access token

https://accounts.google.com/o/oauth2/token

需要的参数:

  • code
  • client_id
  • cilent_secret
  • redirect_uri
  • grant_type

实际的请求大概像这样:

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

code=4/v6xr77ewYqhvHSyW6UJ1w7jKwAzu&
client_id=8819981768.apps.googleusercontent.com&
client_secret=your_client_secret&
redirect_uri=https://oauth2.example.com/code&
grant_type=authorization_code

如果成功以后,我们会收到JSON格式的Response:

{
  "access_token": "ya29.GlvbA3LIk7eIVWpXQJAhqcm3yCKxy7Fopilxm9ft5rXQwxKqBy9Xfno8Jz8DKBBtT3N2DFQ2SHVZ-POLJZaNDE6Ricz12EI-qoVTwSV12A0pD2bwLBxBcnNTGXKm",
  "expires_in": 3599,
  "refresh_token": "1/20S52RHS3KSqbbiHzuHENaINOwIPZToRycITjlEUX0s",
  "token_type": "Bearer"
}

至此我们就可以使用access_token来进行后续的操作了。

4.使用refresh token来刷新access token

当access_token失效的时候,我们需要通过refresh_token来重新获取。发送HTTP POST请求:

https://www.googleapis.com/oauth2/v4/token

需要的参数:

  • refresh_token
  • client_id
  • client_secret
  • grant_type

发送请求的格式如下:

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

client_id=8819981768.apps.googleusercontent.com&
client_secret=your_client_secret&
refresh_token=1/6BMfW9j53gdGImsiyUH5kU5RsR4zwI9lUVX-tqf8JXQ&
grant_type=refresh_token

请求成功之后,会多的JOSN格式的Response,如下:

{
  "access_token": "ya29.GlvbA2Pfz3-egAlzdN6b5ZLOvfDhrcyiHwLkxGQbj11rjEzD9XH5bCEijQF6Lr4x1oTd76fT-dVXv1B1afkIh5_SAkBiCNtJ8krQwesgSWX9zmiqUZuapzZTWIHy",
  "token_type": "Bearer",
  "expires_in": 3600
}

因为服务器对refresh_token的请求有限制,如果过多的请求会导致请求失败的情况。所以需要长期保存refresh_token,只要refresh_token没有失效,就没有必要多次请求。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
OAuth2.0 是一种流行的授权框架,用于在不暴露用户凭据的情况下授权第三方应用程序访问用户资源。下面是一些基本的步骤来使用 OAuth2.0: 1. 注册应用程序 在使用 OAuth2.0 之前,您需要注册一个应用程序并获取客户端ID和客户端密钥。这通常需要在您的 OAuth2.0 服务提供商的网站上完成。 2. 获取授权代码 在您的应用程序中,用户将被重定向到 OAuth2.0 服务提供商的授权页面。用户将输入其凭据并授予您的应用程序访问其资源的权限。一旦用户授权,OAuth2.0 服务提供商将向您的应用程序返回一个授权代码。 3. 交换令牌 使用授权代码,您的应用程序将向 OAuth2.0 服务提供商请求令牌。OAuth2.0 服务提供商将根据您的客户端ID和客户端密钥生成一个访问令牌和刷新令牌。访问令牌可以用于访问用户资源,而刷新令牌可以用于获取新的访问令牌。 4. 使用访问令牌 一旦您的应用程序获得了访问令牌,它可以使用它来访问用户资源。在请求中包括访问令牌,OAuth2.0 服务提供商将验证令牌并允许您的应用程序访问用户资源。 5. 刷新令牌 访问令牌可能会过期,此时您需要使用刷新令牌来获取新的访问令牌。刷新令牌可以在请求中发送,OAuth2.0 服务提供商将使用它来生成新的访问令牌。 以上是使用 OAuth2.0 的基本步骤,但实现 OAuth2.0 还需要注意一些安全问题和最佳实践。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值