【问题标题】:Phoenix + Ueberauth + Google + Heroku : internal server errorPhoenix + Ueberauth + Google + Heroku:内部服务器错误
【发布时间】:2016-03-24 04:09:38
【问题描述】:

我在 Elixir 和 Phoenix 方面相对较新(这可能是我不知道发生了什么的原因)。

我正在尝试在具有 Google 身份验证的 Phoenix 应用上设置 Ueberauth。

我尽我所能忠实地关注示例应用 https://github.com/ueberauth/ueberauth_example。

我为 Heroku 准备了应用程序,就像 Phoenix 文档所说的那样。主页正确显示。当我点击我的按钮开始认证过程时,我得到了谷歌和谷歌询问我是否想要认证。当我单击“是”时,我收到一个内部服务器错误,我真的不知道发生了什么。

这是我在日志中的内容:

2016-03-24T04:02:14.429507+00:00 app[web.1]: 04:02:14.429 [error] #PID 运行 GreatStrides.Endpoint 终止

2016-03-24T04:02:14.429520+00:00 应用[web.1]:服务器:MYHEROKUAPP:80 (http)

2016-03-24T04:02:14.429521+00:00 app[web.1]:请求:GET /auth/google/callback?code=ACODEGOESHERE

2016-03-24T04:02:14.429522+00:00 app[web.1]: ** (exit) exited in: :gen_server.call(:hackney_manager, {:new_request, #PID , #Reference, {:client, :undefined, {:metrics_ng, :metrics_dummy}, :hackney_ssl_transport, 'accounts.google.com', 443, "accounts.google.com", [], nil,无,无,真,:hackney_pool,5000,假,5,假,5,无,无,无,:未定义,:开始,无,:正常,假,假,假,:未定义,假,无,:等待, nil, 4096, "", [], :undefined, nil, nil, nil, nil, :undefined, nil}}, :infinity)

2016-03-24T11:54:59.195968+00:00 app[web.1]: ** (EXIT) 无进程

这是怎么回事?

【问题讨论】:

    标签: heroku elixir phoenix-framework google-authentication ueberauth


    【解决方案1】:

    这应该是评论,但太长了。

    您还有其他错误吗?因为这看起来不完整。

    当 Elixir 应用程序出现问题时,监督树会确保所有遇到错误的进程都死掉。这就是为什么你可以看到第一行GreatStrides.Endpoint terminated。

    第二和第三行只是一个普通的日志。

    第四行是调用gen_server 时出错。它使用所有三个参数打印函数调用:server, request, timeout。您可以检查参数是否正确,但这些是 hackneys 客户记录的一些内部结构。 GenServer 客户端只是在这里等待答案无限长的时间 - 应该不会出错。

    这意味着应该有另一个来自 GenServer 内部的崩溃报告。它可以与前一个类似。在那里你应该能够找到真正的原因。如果 GenServer 在工作时崩溃,所有等待应答的客户端都会收到通知 exited。

    编辑:@Trevoke 编辑后

    问题是hackney gen_server 没有运行,这导致了错误。检查Application.loaded_applications 证明hackney 应用程序根本没有运行,需要将其添加到mix.exs 中的applications 部分。

    【讨论】:

    • 这是问题的一部分。这就是我看到的所有日志。它前面的行是“GET /auth/google/callback”。我不知道如何增加日志记录,也不知道如何在本地尝试和测试。
    • 好的,还有一行。我添加了它。它说“(退出)没有进程”。
    • 这意味着:hackney_manager 进程从未存在过。开始了吗?你能查一下Application.loaded_applications吗? :hackney 在吗?当你输入 Application.start(:hackney) 时会发生什么?
    • 我使用iex -S mix 进行检查。 :hackney 不在列表中。尝试启动 hackney 会产生以下结果:{:error, {:not_started, :idna}}
    • 好的,所以:我将:httpoison 添加到mix.exs 的应用程序列表中,这样就成功了。现在我只是不知道为什么会发生这种情况,以及为什么我的代码和上面链接的示例应用程序之间存在这种不匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    相关资源
    最近更新 更多