admin管理员组

文章数量:1596328

创建权限请求页面和凭据   地址

后续依次填写

创建凭据

使用参考官网

地址1https://developers.google/identity/protocols/oauth2/web-server?hl=zh-cn#httprest
地址2https://developers.google/identity/openid-connect/openid-connect?hl=zh-cn#authenticationuriparameters



创建授权地址

https://accounts.google/o/oauth2/v2/auth

参数:

client_id必需

您的应用的客户端 ID。您可以在 API Console Credentials page中找到此值。

redirect_uri必需

确定在用户完成授权流程后 API 服务器会将用户重定向到何处。该值必须与您在客户端的 API Console Credentials page中配置的 OAuth 2.0 客户端的某个已授权重定向 URI 完全匹配。如果此值与提供的 client_id 经过授权的重定向 URI 不匹配,您会收到 redirect_uri_mismatch 错误。

请注意,http 或 https 架构、大小写和尾随斜杠(“/”)必须全部匹配。

response_type必需

确定 Google OAuth 2.0 端点是否会返回授权代码。

对于 Web 服务器应用,请将参数值设置为 code
参数值有:

code:请求授权码。适用于授权码授权(Authorization Code Grant)流程,这是最常用的 OAuth 2.0 授权类型。

token:请求访问令牌。适用于隐式授权(Implicit Grant)流程,这种方式通常用于单页应用(SPA),因为不需要服务器端交换授权码。

id_token:请求 OpenID Connect ID 令牌。用于 OpenID Connect(OIDC),这是一个身份验证层,构建在 OAuth 2.0 之上。

scope必需

用空格分隔的范围列表,用于标识您的应用可以代表用户访问的资源。这些值会告知 Google 向用户显示的同意屏幕。

范围可让您的应用仅请求访问所需的资源,同时还使用户能够控制他们向您的应用授予的访问权限大小。因此,请求的范围数量与征得用户同意的可能性之间存在反向关系。

我们建议您的应用尽可能在上下文中请求访问授权范围。通过增量授权,您可以在用户执行相关操作时请求其访问用户数据,这有助于您更好地了解您的应用为何需要其所请求的访问权限。

access_type建议

指示当用户未在浏览器中使用时,您的应用是否可以刷新访问令牌。有效参数值包括 online(默认值)和 offline

如果您的应用需要在用户不在浏览器时刷新访问令牌,请将值设置为 offline。这是刷新访问令牌的方法,本文档后面部分将对其进行介绍。此值指示 Google 授权服务器在您的应用首次用授权代码交换令牌时返回刷新令牌和访问令牌。

state建议

指定您的应用用来维护授权请求和授权服务器响应之间的状态的任何字符串值。在用户同意或拒绝应用的访问请求后,服务器会返回您在 redirect_uri 的网址查询组件 (?) 中以 name=value 对形式发送的确切值。

您可以将此参数用于多种用途,例如将用户定向到应用中的正确资源、发送 Nonce,以及减少跨站请求伪造问题。由于您的 redirect_uri 可以被猜到,因此使用 state 值可以提高您的传入连接是身份验证请求结果的可能性。如果您生成随机字符串,或对 Cookie 或其他用于捕获客户端状态的值进行编码,则可以验证响应,以额外确保请求和响应来自同一浏览器,从而防范跨站请求伪造等攻击。如需查看如何创建和确认 state 令牌的示例,请参阅 OpenID Connect 文档。

重要提示:OAuth 客户端必须阻止 CSRF,如 OAuth2 规范 中所述。为了实现此目的,一种方法是使用 state 参数来保持授权请求和授权服务器响应之间的状态。

include_granted_scopes可选

允许应用使用增量授权在上下文中请求访问其他范围。如果您将此参数的值设为 true,并且授予了授权请求,则新的访问令牌还将涵盖用户之前授予应用访问权限的任何范围。如需查看示例,请参阅增量授权部分。

enable_granular_consent可选

默认为 true。如果设为 false,系统会为 2019 年之前创建的 OAuth 客户端 ID 停用更精细的 Google 帐号权限。对较新的 OAuth 客户端 ID 没有影响,因为系统始终会为此类客户端启用更精细的权限。

login_hint可选

如果您的应用知道哪个用户正在尝试进行身份验证,它可以使用此参数向 Google Authentication 服务器提供提示。服务器会根据该提示,通过在登录表单中预填充电子邮件字段或选择适当的多登录会话来简化登录流程。

将该参数值设为电子邮件地址或 sub 标识符,该标识符相当于用户的 Google ID。

prompt可选

向用户显示的提示列表,以空格分隔(区分大小写)。如果您未指定此参数,则系统只会在项目首次请求访问权限时提示用户。如需了解详情,请参阅 提示重新征得用户同意。

可能的值包括:

none不显示任何身份验证或同意屏幕。不得使用其他值指定。
consent提示用户同意。
select_account提示用户选择账号

请求模式:POST等 

https://accounts.google/o/oauth2/v2/auth?
 scope=openid%20email&
 access_type=offline&
 include_granted_scopes=true&
 response_type=code&
 state=state_parameter_passthrough_value&
 redirect_uri=https://localhost/api/google/auth&
 client_id=client_id

 获得token

用户授权后重定向地址参数:

authuser1
code**********Mfx4aW***************
promptconsent
scopeemail openid https://www.googleapis/auth/userinfo.email
state888888969

上面参数code获得token和用户信息
请求地址:https://oauth2.googleapis/token 
参数:

字段
code从初始请求返回的授权代码。
client_id您从 API Console Credentials page获取的客户端 ID,如获取 OAuth 2.0 凭据中所述。
client_secret您从 API Console Credentials page获取的客户端密钥,如获取 OAuth 2.0 凭据中所述。
redirect_uri在 API Console Credentials page中指定的指定 client_id 的授权重定向 URI,如设置重定向 URI 中所述。
grant_type此字段必须包含值 authorization_code( 如 OAuth 2.0 规范中所定义)。

示例:

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

code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=your-client-id&
client_secret=your-client-secret&
redirect_uri=https%3A//oauth2.example/code&
grant_type=authorization_code

此请求的成功响应包含 JSON 数组中的以下字段:

字段
access_token可以发送到 Google API 的令牌。
expires_in访问令牌的剩余生命周期(以秒为单位)。
id_token包含由 Google 进行数字签名的用户身份信息的 JWT。
scopeaccess_token 授予的访问权限范围,表示为一系列以空格分隔并区分大小写的字符串。
token_type标识返回的令牌的类型。目前,此字段始终具有值 Bearer。
refresh_token(可选)

只有当身份验证请求中的 access_type 参数设置为 offline 时,此字段才会显示。有关详情,请参阅刷新令牌。

id_token是包含一组名称/值对的 JSON 对象。下面是一个示例,其格式是为了便于阅读: 

{
  "iss": "https://accounts.google",
  "azp": "1234987819200.apps.googleusercontent",
  "aud": "1234987819200.apps.googleusercontent",
  "sub": "10769150350006150715113082367",
  "at_hash": "HK6E_P6Dh8Y93mRNtsDB1Q",
  "hd": "example",
  "email": "jsmith@example",
  "email_verified": "true",
  "iat": 1353601026,
  "exp": 1353604926,
  "nonce": "0394852-3190485-2490358"
}
参数是否提供说明
aud始终此 ID 令牌的目标受众群体。它必须是应用的 OAuth 2.0 客户端 ID 之一。
exp始终失效时间,在此日期或之后不得接受 ID 令牌。以 Unix 时间(整数秒数)表示。
iat始终ID 令牌的发放时间。以 Unix 时间(整数秒数)表示。
iss始终响应发卡机构的发卡机构标识符。对于 Google ID 令牌,始终使用 https://accounts.google 或 accounts.google
sub始终用户的标识符,在所有 Google 帐号中都是唯一的,并且不得重复使用。一个 Google 帐号在不同时间点可以有多个电子邮件地址,但 sub 值永不更改。在您的应用中使用 sub 作为用户的唯一标识符键。长度上限为 255 个(区分大小写)的 ASCII 字符。
at_hash访问令牌哈希。提供访问令牌与身份令牌关联的验证。如果 ID 令牌在服务器流中通过 access_token 值发出,则始终包含此声明。此声明可用作防跨网站请求伪造攻击的替代机制,但如果您按照第 1 步和第 3 步操作,则无需验证访问令牌。
azp授权 Presenter 的 client_id。只有当 ID 令牌的请求方与 ID 令牌的目标设备不同时,才需要此声明。在 Google 的混合应用中,可能会发生这种情况,其中 Web 应用和 Android 应用具有不同的 OAuth 2.0 client_id,但共用同一个 Google API 项目。
email用户的电子邮件地址。仅当您在请求中包含 email 范围时提供。此声明的值对于此帐号可能不是唯一的,并且可能会随时间发生变化,因此您不应该将此值用作链接到您的用户记录的主要标识符。您也不能依赖 email 声明的域名来识别 Google Workspace 或 Cloud 组织的用户;请改用 hd 声明。
email_verified如果用户的电子邮件地址已通过验证,则为 true;否则为 false。
family_name用户的姓氏。可在存在 name 声明时提供。
given_name用户的名字或名字。可在存在 name 声明时提供。
hd与用户的 Google Workspace 或 Cloud 组织关联的域名。 仅当用户属于 Google Cloud 组织时提供。仅允许特定网域中的成员访问资源时,您必须检查此声明。缺少此声明表示帐号不属于 Google 托管的网域。
locale用户的语言区域,由 BCP 47 语言标记表示。 可在存在 name 声明时提供。
name用户的全名(采用可显示的形式)。在以下情况下可能会提供:
  • 请求范围包含字符串“profile”
  • 刷新令牌后会返回 ID 令牌

如果存在 name 声明,您可以使用它们来更新应用的用户记录。请注意,我们无法保证此版权主张一定会存在。

nonce您的应用在身份验证请求中提供的 nonce 值。您应确保该值只出现一次,以防范重放攻击。
picture用户个人资料照片的网址。在以下情况下可能会提供:
  • 请求范围包含字符串“profile”
  • 刷新令牌后会返回 ID 令牌

如果存在 picture 声明,您可以使用它们来更新应用的用户记录。请注意,我们无法保证此版权主张一定会存在。

profile用户的个人资料页面的网址。在以下情况下可能会提供:
  • 请求范围包含字符串“profile”
  • 刷新令牌后会返回 ID 令牌

如果存在 profile 声明,您可以使用它们来更新应用的用户记录。请注意,我们无法保证此版权主张一定会存在。

使用access_token获得用户信息 

模式:GET
 请求地址:https://www.googleapis/oauth2/v2/userinfo

参数:

字段
access_token授权token

示例:

https://www.googleapis/oauth2/v2/userinfo?access_token=ya29ndwdwdwdw

刷新token 
 

模式:POST

请求地址:https://oauth2.googleapis/token
参数:

字段
client_id从 Credentials page中获取的客户端 ID。 API Console
client_secret从 Credentials page中获取的客户端密钥。 API Console
code初始请求返回的授权代码。
grant_type根据 OAuth 2.0 规范中的定义,此字段的值必须设置为 authorization_code
redirect_uri在给定 client_id 的 API Console Credentials page 中,为您的项目列出的某个重定向 URI。

示例:

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

code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7&
client_id=your_client_id&
client_secret=your_client_secret&
redirect_uri=https%3A//oauth2.example/code&
grant_type=authorization_code

 撤销授权

模式:POST
 请求地址:https://oauth2.googleapis/revoke

参数:

字段
token授权token

​示例:
 

curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
        https://oauth2.googleapis/revoke?token={token}

本文标签: 第三方Google