3

Ich bin relativ neu bei Elixir und Phoenix (was wahrscheinlich der Grund ist, dass ich keine Ahnung habe, was los ist).Phoenix + Ueberauth + Google + Heroku: interner Serverfehler

Ich versuche Ueberauth auf einer Phoenix App mit Google-Authentifizierung einzurichten.

Ich folgte der Beispiel-App https://github.com/ueberauth/ueberauth_example so getreu ich könnte.

Ich bereitete die App für Heroku wie die Phoenix Docs sagen. Die Startseite wird ordnungsgemäß angezeigt. Wenn ich auf meine Schaltfläche klicke, um den Auth-Prozess zu starten, komme ich so weit, wie Google und Google mich fragt, ob ich mich authentifizieren möchte. Wenn ich auf "Ja" klicke, erhalte ich einen internen Serverfehler und ich weiß nicht wirklich, was damit passiert.

Hier ist, was ich in den Protokollen haben:

2016-03-24T04: 02: 14,429507 + 00: 00 app [web.1]: 04: 02: 14,429 [Fehler] #PID < 0.364 .0> läuft GreatStrides.Endpoint beendet

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]: Anforderung: GET /auth/google/callback? Code = ACODEGOESHERE

2016-03-24T04: 02: 14.429522 + 00: 00 app [web.1]: ** (exit) beendet in:: gen_server.call (: hackney_manager, {: new_request, #PID < 0.364.0>, #Reference < 0.0.1.2373>, {: Kunde,: undefined, {: metrics_ng,: metrics_dummy},: hackney_ssl_transport, 'accounts.google.com', 443, "accounts.google.com", [], nil, nil , null, wahr,: hackney_pool, 5000, falsch, 5, falsch, 5, null, null, null,: undefiniert,: start, null,: normal, falsch, falsch, falsch,: undefiniert, falsch, null,: warten , null, 4096, "", [],: undefiniert, null, null, null, null,: undefiniert, null}},: unendlich)

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

Was ist hier los?

Antwort

2

Dies sollte ein Kommentar sein, aber es war zu lang.

Haben Sie weitere Fehler? Weil das unvollständig aussieht.

Wenn in der Elixir-Anwendung etwas nicht stimmt, stellt der Überwachungsbaum sicher, dass alle Prozesse, die den Fehler gefunden haben, abstürzen. Deshalb können Sie die erste Zeile GreatStrides.Endpoint terminated sehen.

Zweite und dritte Zeile ist nur ein normales Protokoll.

Vierte Zeile ist ein Fehler beim Aufruf von gen_server. Es gibt den Funktionsaufruf mit allen drei Argumenten aus: server, request, timeout. Sie können Argumente überprüfen, wenn sie korrekt sind, aber das sind einige Interna von Hackney-Client-Datensatz. Der GenServer-Client wartet hier unendlich lange auf eine Antwort - nichts sollte schief gehen.

Dies bedeutet, dass es einen weiteren Absturzbericht innerhalb von GenServer geben sollte. Es kann ähnlich dem vorherigen sein. Dort sollten Sie den tatsächlichen Grund finden können. Wenn der GenServer während seiner Arbeit abstürzt, werden alle Clients, die auf die Antwort warten, benachrichtigt, dass sie ihn exited.

EDIT: Nach Änderungen von @Trevoke

Das Problem war, dass der hackney gen_server nicht ausgeführt wurde und diese den Fehler verursacht hat. Überprüfung mit Application.loaded_applications bewies, dass hackney Anwendung überhaupt nicht ausgeführt wird und es muss applications Abschnitt in mix.exs hinzugefügt werden.

+0

Das ist ein Teil des Problems. Das sind alle Protokolle, die ich sehe. Die Zeile direkt davor lautet "GET/auth/google/callback". Ich weiß nicht, wie ich die Protokollierung verbessern kann, und ich kann auch nicht sagen, wie ich das lokal testen soll. – Trevoke

+0

Okay, da war noch eine Zeile. Ich habe es hinzugefügt. Es heißt '(EXIT) no process '. – Trevoke

+0

Das bedeutet, dass der': hackney_manager 'Prozess nie existierte. Ist es gestartet? Können Sie' Application.loaded_applications' überprüfen? Ist ': hackney' da? Was passiert, wenn Sie' Application eingeben .start (: hackney) '? – tkowal