← 目录
萧禹
2026-10-23 21:50

Google 登录接入:OAuth 原理、每个设置项的作用与常见错误

自建笔记建站开发
关键词Google 登录OAuthGoogle CloudOAuth 同意屏幕重定向 URIClient ID建站教程

这套 Google Cloud 配置只有一个目的:让用户能在你的网站上用 Google 账号登录。它不负责托管网站、不存你的数据、不收款,也不影响 SEO;它只做身份验证——用户点登录后由 Google 确认身份,再把邮箱和头像交给你的站。

Google 登录的本质是「让 Google 证明这个人是谁」,你的网站不保存任何密码。用户点登录后跳到 Google,由 Google 完成身份验证,再把一个一次性的授权码送回你的服务器;服务器用这个码换到用户的邮箱、姓名和头像,然后在本站建账号或登录。整个过程你的站看不到、也拿不到用户的 Google 密码。

配置的核心只有两样:一对客户端凭据(Client ID 和 Client Secret),以及一个精确到路径的回调地址。同意屏幕、受众类型、发布状态、授权网域这些设置,都是围绕这两样做安全边界和合规声明——告诉用户「谁在请求什么」,也告诉 Google「只允许把用户送回这个地址」。

为什么要把登录交给 Google

如果网站自己做账号系统,就要处理密码存储、找回密码、邮箱验证、撞库防护和泄露风险。用 Google 登录把这些全部外包出去:本站只信任 Google 签发的身份,账号以 Google 的用户 ID 为准,同一邮箱换了 Google 账号会被拒绝登录。代价是用户必须有 Google 账号,这对欧美用户不是问题。

一次 Google 登录发生了什么

  1. 用户点「使用 Google 登录」。
  2. 页面跳转到 Google 同意屏幕,用户确认要授权的信息。
  3. Google 带着一次性的授权码(code)回到登记过的回调地址。
  4. 服务端用 code 换取 token,并读取用户的邮箱、姓名和头像。
  5. 站点按 Google 用户 ID 建号或登录,用户进入网站。

整条链路里,Google 负责确认身份,你的服务端只负责接住授权码并换 token。同意屏幕决定用户看到什么,回调地址决定授权码能送到哪里,凭据决定你的站能否换到身份信息。

每个设置项的作用

下面这些值是按这个项目实际填写的。换成别的网站时,结构和含义相同,值要跟着换。

设置项你填的值为什么需要
Google Cloud 项目hit-the-road-dude把 OAuth 凭据、配额和日志隔离在一个项目里
OAuth 同意屏幕已创建用户登录时看到的「谁在请求什么」页面
受众类型外部允许任何 Google 账号登录,不只组织内部
发布状态正式版测试版只有测试账号能登录,正式版对所有用户开放
用户上限 100不受影响只对敏感或受限权限生效;本站只用基础权限
客户端类型Web 应用本站由服务端完成授权码交换,不是手机或桌面应用
JavaScript 来源https://hittheroaddudeai.fun限制哪些网页可以发起 Google 登录请求
重定向 URI/api/auth/google/callbackGoogle 只把授权码送回这个精确地址
Client ID270694665379-…公开身份,写进页面配置,谁看到都无所谓
Client Secret已填入 .dev.vars服务端换 token 的私钥,泄露等于别人能冒充你的站
数据访问范围openid email profile只要身份信息,不碰 Gmail、Drive 等敏感数据
授权网域hittheroaddudeai.fun声明 OAuth 可以使用的域名

操作步骤:按顺序点完这几步

发布到正式版

同意屏幕建好后默认是「测试」,只有你手动添加的测试账号能登录。点「发布应用」切到正式版,外部用户才能用。基础权限不需要 Google 人工验证。

Google Auth Platform 受众页面,显示正式版、外部用户类型和 100 用户上限

截图里可以看到:状态为「正式版」,用户类型为「外部」。0/100 的用户上限只对敏感或受限权限生效,本站只用基础权限,不受影响。

创建 Web 应用客户端

应用类型选「Web 应用」,名称只是给你自己在控制台里识别用的,不会显示给用户。JavaScript 来源填正式域名,注意不要带路径和末尾斜杠。

创建 OAuth 客户端 ID 表单,应用类型为 Web 应用,名称 hit-the-road-dude-web

创建客户端时填的名称是 hit-the-road-dude-web,JavaScript 来源为 https://hittheroaddudeai.fun。

填重定向地址,不要勾 AI Agent

重定向 URI 是整套配置里最容易出错的一项。它必须和代码里的回调地址完全一致,包括协议、路径和大小写,不能有末尾斜杠。底部的「Use this client for an AI-powered agent」不要勾,本站是普通 Web 登录,不是 AI 代理。

重定向 URI 填写框,内容为 https://hittheroaddudeai.fun/api/auth/google/callback,下方 AI agent 选项未勾选

重定向 URI 填的是 https://hittheroaddudeai.fun/api/auth/google/callback,下方的 AI-powered agent 选项保持不勾。

品牌页:现在先不传徽标

品牌页的应用首页、隐私政策、服务条款链接可以等站点部署后再填。徽标上传后会触发 Google 验证,而验证要求这些链接可访问,所以现在传会卡住。徽标本身随时可以换,不影响 Client ID 和 Secret。

Google OAuth 品牌页面,包含徽标上传、应用首页、隐私政策和服务条款链接字段

品牌页里徽标先留空;三个链接等 hittheroaddudeai.fun 部署后再填并提交验证。

项目里已经填好的值

项目值位置
Client ID270694665379-t26k6i6ueo6dpjn3ipton4p04ot1njet.apps.googleusercontent.comwrangler.jsonc 的 GOOGLE_CLIENT_ID
Client Secret已填写,不显示.dev.vars 的 GOOGLE_CLIENT_SECRET
回调地址https://hittheroaddudeai.fun/api/auth/google/callbackGoogle 控制台与代码共用
登录范围openid email profilesrc/server/google.ts

常见错误对照

现象原因处理
redirect_uri_mismatch回调地址不完全一致逐字符核对协议、路径、斜杠
只有测试账号能登录应用还在测试状态在受众页面点「发布应用」
登录后回到错误页面Client ID 或 Secret 填错重新复制,注意 Secret 不要带空格
提示应用未验证上传了徽标但未验证先移除徽标,或等站点上线后提交验证
本地登录跳正式域名本地用正式 SITE_URL本地改用开发登录即可

这套配置的边界

这套配置只解决「用户是谁」的问题,不解决部署、存储和支付。站点部署、对象存储、域名解析仍是另外的环节;Google 登录要等站点部署后才能真正测试。

截至 2026 年 10 月 23 日:Google OAuth 客户端已创建,Client ID 与 Secret 已写入项目;站点尚未部署,因此登录流程还未做过端到端测试。