3

我在Elixir和Phoenix比较新(这可能是我不知道发生了什么事的原因)。Phoenix + Ueberauth + Google + Heroku:内部服务器错误

我试图在Google认证的凤凰应用上设置Ueberauth。

我按照我的想法忠实地跟踪了示例应用程序https://github.com/ueberauth/ueberauth_example

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

下面是我在日志中:

2016-03-24T04:02:14.429507 + 00:00的应用[web.1]:04:02:14.429 [错误] #PID < 0.364 0.0>运行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)exiting 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,true,:hackney_pool,5000,false,5,false,5,nil,nil,nil,:undefined,:start,nil,:normal,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

这是怎么回事?

回答

2

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

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

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

二三线只是一个正常的日志。

第四行是错误调用gen_server。它使用所有三个参数打印函数调用:server, request, timeout。你可以检查参数是否正确,但这些都是hackneys客户端记录的内部结构。 GenServer客户端只是在这里等待无限次的答案 - 没有任何问题。

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

编辑:由@Trevoke

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

+0

这是问题的一部分。这就是我看到的所有日志。该行恰好在“GET/auth/google/callback”之前。我不知道如何增加日志记录,我也不知道如何尝试和本地测试。 – Trevoke

+0

好的,还有一行。我添加了它。它说'(退出)没有进程“ – Trevoke

+0

这意味着':hackney_manager'进程从来没有存在过,它是否启动?你能检查'Application.loaded_applications'吗?是否存在':hackney'?当你键入'Application .start(:hackney)'? – tkowal