OAuth 应用程序的网络应用流程

 OAuth 应用程序的网络应用流程

注意:如果您正在构建 GitHub 应用程序,您仍然可以使用 OAuth Web 应用程序流程,但设置有一些重要区别。有关更多信息,请参阅“为 GitHub 应用程序识别和授权用户”(https://docs.github.com/en/developers/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps)

为您的应用程序授权用户的 Web 应用程序流程是:

  1. 用户被重定向以请求他们的 GitHub 身份
  2. 用户被 GitHub 重定向回您的站点
  3. 您的应用使用用户的访问令牌访问 API

1. 请求用户的 GitHub 身份

GET https://github.com/login/oauth/authorize

当您的 GitHub 应用程序指定登录参数时,它会提示用户使用他们可用于登录和授权您的应用程序的特定帐户。

参数:

Name

Type

Description

client_id

string

必需的。注册时从 GitHub 收到的客户端 ID。

redirect_uri

string

您的应用程序中的 URL 将在授权后发送用户。请参阅下面有关重定向 URL 的详细信息。

login

string

建议用于登录和授权应用程序的特定帐户。

scope

string

以空格分隔的范围列表。如果未提供,则范围默认为未授权应用程序任何范围的用户的空列表。对于拥有应用程序授权范围的用户,用户将不会看到带有范围列表的 OAuth 授权页面。相反,流程的这一步将自动完成用户为应用程序授权的范围集。例如,如果用户已经执行了两次 Web 流,并已授权一个具有用户范围的令牌和另一个具有 repo 范围的令牌,则不提供范围的第三个 Web 流将收到具有用户和 repo 范围的令牌。

state

string

一个不可猜测的随机字符串。它用于防止跨站点请求伪造攻击。

allow_signup

string

在 OAuth 流程期间,是否会为未经身份验证的用户提供注册 GitHub 的选项。默认值为真。当策略禁止注册时使用 false。

2. 用户被 GitHub 重定向回你的站点

如果用户接受您的请求,GitHub 将使用代码参数中的临时代码以及您在上一步中在状态参数中提供的状态重定向回您的站点。临时代码将在 10 分钟后过期。如果状态不匹配,则第三方创建了请求,您应该中止该过程。

将此代码交换为访问令牌:

POST https://github.com/login/oauth/access_token

参数:

Name

Type

Description

client_id

string

必需的。您从 GitHub 收到的 OAuth 应用程序的客户端 ID。

client_secret

string

必需的。您从 GitHub 收到的 OAuth 应用程序的客户端密码。

code

string

必需的。您收到的作为对步骤 1 的响应的代码。

redirect_uri

string

授权后发送用户的应用程序中的 URL。

回复(Response):

默认情况下,响应采用以下形式:

access_token=gho_16C7e42F292c6912E7710c838347Ae178B4a&scope=repo%2Cgist&token_type=bearer

如果您在 Accept 标头中提供格式,您还可以接收不同格式的响应。

例如,接受:application/json 或接受:application/xml:

 

3. 使用访问令牌访问API

访问令牌允许您代表用户向 API 发出请求。

Authorization: token OAUTH-TOKEN

GET https://api.github.com/user

例如,在 curl 中,您可以像这样设置 Authorization 标头:

curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com/user

GitHubOAuth应用程序授权登录时序图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值