Phoenix + Ueberauth + Google + Heroku:内部服务器错误

Phoenix + Ueberauth + Google + Heroku : internal server error

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

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

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

我像 Phoenix 文档所说的那样为 Heroku 准备了应用程序。主页正确显示。当我单击我的按钮以启动身份验证过程时,我到达 Google 并且 Google 询问我是否要进行身份验证。当我单击“是”时,出现内部服务器错误,我真的不知道发生了什么。

这是我在日志中的内容:

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

2016-03-24T04:02:14.429520+00:00 app[web.1]: Server: MYHEROKUAPP:80 (http)

2016-03-24T04:02:14.429521+00:00 app[web.1]: Request: 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) no process

这是怎么回事?

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

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

当 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 部分