3

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

我正在尝试使用 Google 身份验证在 Phoenix 应用程序上设置 Ueberauth。

我尽我所能忠实地遵循示例应用程序https://github.com/ueberauth/ueberauth_example 。

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

这是我在日志中的内容:

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

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

2016-03-24T04:02:14.429521+00:00 应用 [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<0.364.0>, #Reference <0.0.1.2373>, {:client, :undefined, {:metrics_ng, :metrics_dummy}, :hackney_ssl_transport, 'accounts.google.com', 443, "accounts.google.com", [], nil, nil, nil , true, :hackney_pool, 5000, false, 5, false, 5, nil, nil, nil, :undefined, :start, nil, :normal, false, false, false, :undefined, false, nil, :waiting, nil , 4096, "", [], :undefined, nil, nil, nil, nil, :undefined, nil}}, :infinity)

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

这里发生了什么?

4

1 回答 1

2

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

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

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

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

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

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

编辑:@Trevoke 编辑后

问题是hackneygen_server 没有运行,这导致了错误。检查Application.loaded_applications证明hackney应用程序根本没有运行,需要将其添加applicationsmix.exs.

于 2016-03-24T07:57:40.893 回答