常见问题
常见问题Application Passwords 无法正常工作

Application Passwords 无法正常工作

在使用 Application Passwords 对 GraphQL 端点的请求进行身份验证时,如果验证不起作用,可能是与站点上安装的某个插件发生了冲突。特别是当 WooCommerce 已安装并激活时,往往会出现这种情况。

如果使用 Application Password 请求 GraphQL 端点时用户身份验证失败,且您在 Gato GraphQL 中执行了以下任一操作:

  • 修改了 GraphQL Single Endpoint 的路径
  • 修改了 Custom Endpoints 或 Persisted Queries 的基础 slug
  • 禁用了任意端点(通过禁用对应模块)

……则您必须通过钩子(hook)应用相同的修改,以避免冲突。

为什么会出现这个问题

WooCommerce 的初始化与 Gato GraphQL 的服务容器设置之间存在时序冲突。

WooCommerce 在其初始化过程中会触发 application_password_is_api_request 过滤器。由于此时 Gato GraphQL 尚未完成初始化,它无法从数据库中获取正确的端点路径,因此无法判断请求是否来自 GraphQL 端点,也无法启用 Application Passwords 进行身份验证。

解决方案

application_password_is_api_request 过滤器被 WooCommerce(或其他插件)触发时,Gato GraphQL 会假定 GraphQL 端点使用默认路径。

因此,如果您通过插件设置修改了任何公开端点的路径,则必须同时通过钩子应用相同的修改。

请阅读指南 通过钩子复制 GraphQL 端点路径更新 以获取解决方案。