OAuth2.0 三方登录(Google登录)

一、OAuth2.0流程

  • (A)客户端向从资源所有者请求授权。
  • (B)客户端收到授权许可,资源所有者给客户端颁发授权许可(比如授权码code)
  • (C)客户端与授权服务器进行身份认证并出示授权许可(比如授权码code)请求访问令牌。
  • (D)授权服务器验证客户端身份并验证授权许可,若有效则颁发访问令牌(accept token)。
  • (E)客户端从资源服务器请求受保护资源并出示访问令牌(accept token)进行身份验证。
  • (F)资源服务器验证访问令牌(accept token),若有效则满足该请求。

二、OAuth2.0授权模式

OAuth2.0有4种授权模式:

  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 密码模式(resource owner password credentials)
  • 客户端模式(client credentials)

三、授权码模式(authorization code)


角色解释:

  • 资源所有者(Resource Owner): 能够许可受保护资源访问权限的实体。当资源所有者是个人时,它作为最终用户被提及。(理解为终端用户)
  • 用户代理(User Agent): 指的的资源拥有者授权的一些渠道。一般指的是浏览器、APP。(理解为浏览器)
  • 客户端(Client): 使用资源所有者的授权代表资源所有者发起对受保护资源的请求的应用程序。术语"客户端"并非特指任何特定的的实现特点(例如:应用程序是否在服务器、台式机或其他设备上执行)。(理解为后端服务器)
  • 授权服务器(Authorization Server): 在成功验证资源所有者且获得授权后颁发访问令牌给客户端的服务器。
    授权服务器和资源服务器之间的交互超出了本规范的范围。授权服务器可以和资源服务器是同一台服务器,也可以是分离的个体。一个授权服务器可以颁发被多个资源服务器接受的访问令牌。(比如 Google、GitHub、微信等三方服务)
  • 资源服务器(Resource Server): 托管受保护资源的服务器,能够接收和响应使用访问令牌对受保护资源的请求。

流程解释:

  • A\] 用户访问客户端,后者将前者导向认证服务器。

  • C\] 假设用户给予授权,认证服务器将用户导向客户端事先指定的"重定向URI"(redirection URI),同时附上一个授权码。

  • E\] 认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)。

1. 创建 Google 凭据

  1. 访问Google Cloud Console,登录Google账户。
  2. 创建新项目:点击"创建项目",输入项目名称,然后创建项目。
  3. 启用Google+ API:虽然现在Google+不再存在,但你需要找到相应的API(如"Google People API")来管理用户信息和认证。
  4. 创建OAuth 2.0客户端ID:
  • 导航到"凭据"部分。
  • 点击"创建凭据" > "OAuth客户端ID"。
  • 选择应用类型(例如,"Web应用"),并输入你的应用名称。
  • 添加重定向URI,这应该包括你的应用将在用户授权后接收响应的URL。如果你的应用有多个重定向需求,比如开发环境和生产环境,都需要在这里列出。在这个场景中,你需要添加/google-callback.json作为重定向URI。
  • 获取客户端ID和密钥:创建完客户端ID后,你会获得一个客户端ID和客户端密钥,这些是你在应用中进行Google登录认证时需要使用的凭据。

2. 代码实现

1. 用户点击 Google 登录

客户端请求服务端获取三方登录地址,服务端返回地址:
https://accounts.google.com/o/oauth2/v2/auth/oauthchooseaccount?scope=openid email profile&include_granted_scopes=true&response_type=code&state=服务端生成唯一code&redirect_uri=https://xxx/google-callback.json&client_id=xxx&flowName=GeneralOAuthFlow&prompt=consent&service=lso&o2v=2&ddm=0

  • state:服务端生成的唯一 state,三方平台回调时会回传,state 可以确定请求用户
  • redirect_uri:三方回调地址,三方平台会在浏览器上302 重定向到这个地址
2. 用户确认授权
3. Google 回调

回调地址:https://xxx/google-callback.json?state=xxx&code=xxx&scope=email+profile+openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&authuser=0&prompt=consent

  • state:服务端生成的唯一 state,Google 回调会原样传回来,用state 可以确定请求用户
  • code:根据 code 可以换取 token
4. 换取 token
5. 获取用户信息

拿到 token 以后可以获取到用户信息

相关推荐
li91362 天前
不限速!5款磁力下载工具,50M/s!(附磁力搜索软件合集)
google
小霸王_3003786311 天前
《Google 与 Edge 浏览器对HTTP到HTTPS重定向处理的差异》
http·google·https·edge
hudawei99617 天前
google.mlkit:face-detection和 opencv的人脸识别有什么区别
人工智能·opencv·计算机视觉·google·人脸识别·mlkit·face-detection
Coffeeee17 天前
了解一下Android16更新事项,拿捏下一波适配
android·前端·google
前端切图仔00117 天前
Chrome 扩展程序上架指南
android·java·javascript·google
甲维斯17 天前
谷歌Antigravity 也支持技能了!
google
崔庆才丨静觅18 天前
Veo API:0 门槛量产商业级视频!2026 视频流量密码,创作者/商家必藏
后端·google·api
小溪彼岸21 天前
Gemini CLI V0.22发布了Conductor和Endor Labs并向Free Tier用户开放了Gemini 3
google·gemini
崔庆才丨静觅23 天前
Veo API:0门槛量产商业级视频!2026视频流量密码,创作者/商家必藏
google·api
TTGGGFF1 个月前
解决Gemini无法进入显示 “Google Al Studio 和 Gemini AP| 的可用区域” 的问题
ai·google·gemini3