常见问题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 端点路径更新 以获取解决方案。