5

Ich interessiere mich für das Lernen der Omniauth-Authentifizierung mit Schienen, also habe ich verschiedene Führer überprüft, in denen auch Railscast # 360 enthält.Schienen - Omniauth-facebook App_id erforderlicher Fehler

Wenn ich meine eigene App mit developers.facebook.com erstelle, erstellt es eine App_id und ein Geheimnis für mich. Ich habe die Anwendung online gestellt und eine einfache Rails-App erstellt, die nur die Schritte im Ryan Bates-Handbuch verwendet.

Dies ist meine omniauth.rb Datei, die den Fehler erzeugt, die ich recieving bin,

OmniAuth.config.logger = Rails.logger 

Rails.application.config.middleware.use OmniAuth::Builder do 
    provider :facebook, ENV['875829959136178'], ENV['<app_secret>'] 
end 

Ich habe auch versucht

provider :facebook, ENV['FACEBOOK_875829959136178'], ENV['FACEBOOK_<app_secret>'] 

zu verwenden.

Wenn ich http://localhost:3000/auth/facebook aufrufen, erhalte ich einen Fehler, der angibt, dass "der Parameter app_id erforderlich ist".

Wie ich diesen Fehler passieren können,

Antwort

11

Es scheint, Sie mißverstehen, was ENV ist. ENV[xxx] ist eine Ruby-Methode, die den Wert für die Umgebungsvariable xxx abruft. So versucht ENV['875829959136178'] in Ihrem Code-Snippet, den Wert für die Umgebungsvariable 875829959136178 abzurufen. Es ist sehr wahrscheinlich, dass Sie Ihre app_id nicht auf die Umgebungsvariable 875829959136178 gesetzt haben, und ENV['875829959136178'] gibt daher nil zurück. provider ist eine Methode, die app_id und app_secret akzeptiert, aber da Sie nil als app_id angeben, wird behauptet, dass die app_id nicht angegeben wird, obwohl sie benötigt wird.

Angenommen, Ihre App_ID ist 875829959136178 und Ihr App_Secret ist APP_SECRET. Der einfachste Weg, Ihre App zum Laufen zu bringen, besteht darin, sie als String anzugeben.

Sie sollten jedoch beachten, dass das Setzen Ihrer App-ID und des geheimen Quellcodes als Klartext aus Sicherheitsgründen nicht wünschenswert ist. Sie sollten sich anlehnen, wie Sie Umgebungsvariablen festlegen, indem Sie Artikel wie this lesen oder Edelsteine ​​wie dotenv verwenden.

+0

Eine erstaunliche Erklärung :) Vielen Dank. Wird sich auf die Env-Variablen richtig noe :) –