You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无FOSUserBundle集成HWIOAuthBundle谷歌登录遇404,求路由列表

解决HWIOAuthBundle谷歌登录404及Twig可用路由查看问题

我来帮你搞定这个集成问题,先从你关心的Twig中可用的HWIOAuthBundle路由查看方法说起,再一步步排查404错误的原因:

一、查看HWIOAuthBundle的可用路由路径

要找到Twig里能用的路由,最直接的方式就是用Symfony的控制台命令:

php bin/console debug:router

执行后会列出所有已注册的路由,你直接搜索带hwi_oauth前缀的条目就行。通常会看到这些核心路由:

  • hwi_oauth_connect:展示所有OAuth登录选项的页面(如果需要的话)
  • hwi_oauth_service_redirect:通用的重定向路由,需要传入service参数指定服务商(比如google)
  • hwi_oauth_service_redirect_google:针对谷歌的专属重定向路由(如果你的配置生成了命名路由)
  • hwi_oauth_service_login_google:谷歌登录的回调处理路由

在Twig模板里,你可以用path()函数生成对应的链接,比如:

  • 用通用路由:{{ path('hwi_oauth_service_redirect', {'service': 'google'}) }}
  • 用专属命名路由:{{ path('hwi_oauth_redirect_google') }}

二、排查“xxxx/connect/google”404的原因

结合你提到的几个文件,逐一检查:

1. 路由配置(routing.yml)

首先要确保你已经导入了HWIOAuthBundle的路由,否则它的所有路由都不会生效:

# routing.yml
hwi_oauth:
    resource: "@HWIOAuthBundle/Resources/config/routing.xml"

# 还要记得配置谷歌登录的回调路径
login_check_google:
    path: /login/check-google

2. HWIOAuth配置(config.yml)

确认你正确配置了谷歌的OAuth服务,并且firewall_name和你security.yml里的防火墙名称一致:

# config.yml
hwi_oauth:
    firewall_name: main # 对应security.yml里的防火墙名称
    resource_owners:
        google:
            type: google
            client_id: 你的谷歌客户端ID
            client_secret: 你的谷歌客户端密钥
            scope: "email profile" # 按需设置权限

3. 安全配置(security.yml)

在对应的防火墙里,必须配置OAuth相关的规则,指定回调路径和你的自定义用户提供者:

# security.yml
security:
    firewalls:
        main:
            # 其他防火墙配置...
            oauth:
                resource_owners:
                    google: "/login/check-google" # 和routing.yml里的回调路径一致
                login_path: /login # 你的登录页面路径
                failure_path: /login
                oauth_user_provider:
                    service: app.oauth_provider # 你的OAuthProvider.php的服务ID

    # 还要确保你的自定义用户提供者被注册
    providers:
        app_oauth_provider:
            id: app.oauth_provider

4. 自定义OAuthProvider服务

你的OAuthProvider.php必须实现OAuthAwareUserProviderInterface,并且在services.yml里注册:

# services.yml
services:
    app.oauth_provider:
        class: App\Security\OAuthProvider # 替换成你的类实际路径

类里要实现loadUserByOAuthUserResponse()方法,处理从谷歌返回的用户信息,完成登录或注册逻辑。

最后验证

做完以上配置后,再执行一次php bin/console debug:router,确认hwi_oauth_service_redirect_google或者hwi_oauth_service_redirect路由存在,然后用Twig生成的链接访问,应该就不会出现404了。

内容的提问来源于stack exchange,提问作者Brian Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:06:59