You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Ueberauth、Elixir、Phoenix对接Github OAuth时出现404错误

解决Ueberauth + Phoenix对接Github OAuth时的404错误

首先,从你提供的跳转链接能一眼看出核心问题:client_id参数是空的!Github的OAuth授权页面需要有效的client_id来识别你的应用,空值会直接导致404。终端的302状态码只是Phoenix在正常执行重定向操作,但因为参数缺失,目标页面无法访问。

下面是一步步的排查和修复方案:

  • 检查Ueberauth Github的配置
    确保你在项目的配置文件(比如config/runtime.exs或者config/config.exs)里正确配置了Github OAuth的client_id和client_secret。推荐用环境变量存储敏感信息,配置示例如下:

    config :ueberauth, Ueberauth.Strategy.Github.OAuth,
      client_id: System.get_env("GITHUB_CLIENT_ID"),
      client_secret: System.get_env("GITHUB_CLIENT_SECRET")
    

    注意:不要把真实的client_id和secret硬编码到配置文件里,避免敏感信息泄露。

  • 验证环境变量是否正确加载
    很多时候问题出在环境变量没被正确读取。你可以启动项目的iex控制台,输入System.get_env("GITHUB_CLIENT_ID"),看看是否返回你在Github OAuth应用里获取到的client_id。如果返回nil,说明环境变量没设置好:

    • 如果你用终端启动Phoenix,先在终端执行export GITHUB_CLIENT_ID=你的client_idexport GITHUB_CLIENT_SECRET=你的secret,再启动项目;
    • 如果你用dotenv工具(比如dotenv_elixir),确保.env文件里正确写入了这两个变量,并且项目依赖已经安装。
  • 确认Github OAuth应用的配置
    登录Github的开发者设置,找到你创建的OAuth应用,检查两个关键点:

    1. Client ID是否和你配置的一致;
    2. Authorization callback URL是否完全匹配你跳转链接里的redirect_uri(也就是http://localhost:4000/auth/github/callback),大小写、端口、路径都不能错。
  • 检查Phoenix路由配置
    确保你的路由里正确挂载了Ueberauth的路由,示例如下:

    scope "/auth", MyAppWeb do
      pipe_through :browser
    
      get "/:provider", AuthController, :request
      get "/:provider/callback", AuthController, :callback
    end
    

    这里的AuthController需要实现request/2callback/2动作,但当前的404问题和控制器逻辑无关,先确保配置正确后再验证控制器。

按照上面的步骤排查,优先解决client_id为空的问题,应该就能正常跳转到Github的授权页面了。

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

火山引擎 最新活动