创建权限请求页面和凭据 地址
后续依次填写
创建凭据
使用参考官网
地址1https://developers.google.com/identity/protocols/oauth2/web-server?hl=zh-cn#httprest
地址2https://developers.google.com/identity/openid-connect/openid-connect?hl=zh-cn#authenticationuriparameters
创建授权地址
https://accounts.google.com/o/oauth2/v2/auth
参数:
client_id | 必需 您的应用的客户端 ID。您可以在 API Console Credentials page中找到此值。 | ||||||
redirect_uri | 必需 确定在用户完成授权流程后 API 服务器会将用户重定向到何处。该值必须与您在客户端的 API Console Credentials page中配置的 OAuth 2.0 客户端的某个已授权重定向 URI 完全匹配。如果此值与提供的 请注意, | ||||||
response_type | 必需 确定 Google OAuth 2.0 端点是否会返回授权代码。 对于 Web 服务器应用,请将参数值设置为 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 | 建议 指示当用户未在浏览器中使用时,您的应用是否可以刷新访问令牌。有效参数值包括 如果您的应用需要在用户不在浏览器时刷新访问令牌,请将值设置为 | ||||||
state | 建议 指定您的应用用来维护授权请求和授权服务器响应之间的状态的任何字符串值。在用户同意或拒绝应用的访问请求后,服务器会返回您在 您可以将此参数用于多种用途,例如将用户定向到应用中的正确资源、发送 Nonce,以及减少跨站请求伪造问题。由于您的 重要提示:OAuth 客户端必须阻止 CSRF,如 OAuth2 规范 中所述。为了实现此目的,一种方法是使用 | ||||||
include_granted_scopes | 可选 允许应用使用增量授权在上下文中请求访问其他范围。如果您将此参数的值设为 | ||||||
enable_granular_consent | 可选 默认为 | ||||||
login_hint | 可选 如果您的应用知道哪个用户正在尝试进行身份验证,它可以使用此参数向 Google Authentication 服务器提供提示。服务器会根据该提示,通过在登录表单中预填充电子邮件字段或选择适当的多登录会话来简化登录流程。 将该参数值设为电子邮件地址或 | ||||||
prompt | 可选 向用户显示的提示列表,以空格分隔(区分大小写)。如果您未指定此参数,则系统只会在项目首次请求访问权限时提示用户。如需了解详情,请参阅 提示重新征得用户同意。 可能的值包括:
|
请求模式:POST等
https://accounts.google.com/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
用户授权后重定向地址参数:
键 | 值 |
---|---|
authuser | 1 |
code | **********Mfx4aW*************** |
prompt | consent |
scope | email openid https://www.googleapis.com/auth/userinfo.email |
state | 888888969 |
上面参数code获得token和用户信息
请求地址:https://oauth2.googleapis.com/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.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%3A//oauth2.example.com/code&
grant_type=authorization_code
此请求的成功响应包含 JSON 数组中的以下字段:
字段 | |
---|---|
access_token | 可以发送到 Google API 的令牌。 |
expires_in | 访问令牌的剩余生命周期(以秒为单位)。 |
id_token | 包含由 Google 进行数字签名的用户身份信息的 JWT。 |
scope | access_token 授予的访问权限范围,表示为一系列以空格分隔并区分大小写的字符串。 |
token_type | 标识返回的令牌的类型。目前,此字段始终具有值 Bearer。 |
refresh_token | (可选) 只有当身份验证请求中的 access_type 参数设置为 |
id_token
是包含一组名称/值对的 JSON 对象。下面是一个示例,其格式是为了便于阅读:
{
"iss": "https://accounts.google.com",
"azp": "1234987819200.apps.googleusercontent.com",
"aud": "1234987819200.apps.googleusercontent.com",
"sub": "10769150350006150715113082367",
"at_hash": "HK6E_P6Dh8Y93mRNtsDB1Q",
"hd": "example.com",
"email": "jsmith@example.com",
"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.com 或 accounts.google.com 。 |
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 | 用户的全名(采用可显示的形式)。在以下情况下可能会提供:
如果存在 | |
nonce | 您的应用在身份验证请求中提供的 nonce 值。您应确保该值只出现一次,以防范重放攻击。 | |
picture | 用户个人资料照片的网址。在以下情况下可能会提供:
如果存在 | |
profile | 用户的个人资料页面的网址。在以下情况下可能会提供:
如果存在 |
使用access_token
获得用户信息
模式:GET
请求地址:https://www.googleapis.com/oauth2/v2/userinfo
参数:
字段 | |
---|---|
access_token | 授权token |
示例:
https://www.googleapis.com/oauth2/v2/userinfo?access_token=ya29ndwdwdwdw
刷新token
模式:POST
请求地址:https://oauth2.googleapis.com/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.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%3A//oauth2.example.com/code&
grant_type=authorization_code
撤销授权
模式:POST
请求地址:https://oauth2.googleapis.com/revoke
参数:
字段 | |
---|---|
token | 授权token |
示例:
curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
https://oauth2.googleapis.com/revoke?token={token}