#1396·postiz-app

在自主托管的实例上,Google OAuth 登录出现 redirect_uri_mismatch 错误

作者: franco-utalk创建于 2026年4月11日更新于 2026年9月17日
标签type: bugstale

说明

Google OAuth 登录在自托管实例上被打破. 登录流量以Google的重定向 uri mismatch出错失败,因为两个不同的OAuth提供者用于同一登录流量的两半,每个版本都有不同的重定向 uri. 这意味着用于获取授权代码的重定向 uri与用于交换一个符号的代码不符,被Google拒绝. 具体而言:

  • 链接生成由OauthProvider(GENERIC)通过oauth处理。 professor.js,它用重定向 uri=${FRONTEND URL}/设置来构建 Google 认证 URL
  • 托肯交换(OauthExists call)由GoogleProvider(GOOGLE)通过google.producer.js处理,它使用重定向-uri=${FRONTEND URL}/整合/社会/Youtube

这两个重定向URI不匹配,导致Google返回重定向 uri mismatch,后端返回500.

  • 复制步骤
  1. 通过Docker 自行部署Postiz

  2. 配置 Google OAuth 证书:

  • 设置 POSTIZ OOTH CLIENTH ID, POSTIZ OOTH CLIENTH SECRET, POSTIZ OSTIZ AUTH URL, POSTIZ OSTH USERINFO URL 设作"你"CLIENT"ID,"你"CLIENT"SECRET
  • 将https:///设置和https:///整合/social/youtube登记为授权重定向Google Cloud控制台的URI
  1. 导航到 Postiz 登录页面
  2. 用谷歌点击登录
  3. 认证谷歌账户
  4. 观察500个错误

预期行为

Google OAuth 登录成功完成,用户被认证.

    • 有截图的实际行为

后端返回一个 500 个内部服务器出错 。 浏览器控制台显示 :

** POST/api/auth/oauth/GOGLE/存在500(内部服务器错误)**

后端日志显示 :

** 错误 [例外] 重定向 uri mismatch 错误: 重定向 uri mismatch 在Gaxios. 请求(./gaxios/building/src/gaxios.js:142:23) at async OAuth2Client.get TokenAsync (./google-auth-library/building/src/auth/oauth2客户端.js:158:21) at async Google Provider.getToken (./src/ services/auth/producers/google.productor.js:44:28) (中文(简体) ). 检查员(./src/service/auth/auth.service.js:185:23) 自动控制器 自动控制器 自动控制器 自动控制器

操作系统

麦克OS

QQ 节点版本

页:1

QQ 为 Bug 提供任何额外的上下文 。

根源分析

google.profer.js (Google Provider)由@AuthProvider ({提供商:"GOOGLE"})来装饰并处理oauthExists端点. 然而,它是围绕YouTube OAuth(客户AndYoutube ())而建的,使用YouTUBE CLIENT ID/YOTUBE CLIENT SECRET,重定向Uri=${FRONTEND URL}/整合/社交/Youtube. oauth.profer.js (Oauth Provider)由@AuthProvider({提供商:"GENERIC"})来进行装饰并使用重定向Uri=${FRONTEND URL}/设置生成初始的Google登录链接. 前端调用GENERIC提供商进行链接生成,GOGLE提供商调用符交换器——这些 . . . . . . .

内容来源: gitroomhq/postiz-app