So testen Sie Facebook Connect Local

193

Ich verwende ASP .NET- und Facebook Connect-APIs. Wenn ich jedoch die App starte und die Schaltfläche "Verbinden" drücke, kehrt sie zur Website zurück und nicht zum lokalen Testserver ( http: // localhost: xxxx / test.aspx ). So kann ich Facebook lokal testen (dh wie kann ich das ändern ? Rückruf-URL)?

Haytham
quelle
4
Die Antwort lautet hier: forum.developers.facebook.com/viewtopic.php?pid=116136 Sie müssen die Datei 'C: \ WINDOWS \ system32 \ drivers \ etc \ hosts' bearbeiten, damit Ihre Domain zu Ihrem localHost kommt
Haytham
101
Dieses System scheint von Facebook eher schlecht implementiert zu sein. Es scheint ihnen nicht in den Sinn gekommen zu sein, dass jemand die Funktion anders als auf einem Live-Server testen möchte. Die beiden hier angegebenen Lösungen - Bearbeiten der lokalen Hosts-Datei, um den Produktionsserver zu fälschen und an localhost umzuleiten, und vorübergehendes Ändern der Live-Produktions-URL auf Facebook in localhost - sind beide bemerkenswert schlechtes Design von Facebook. Facebook muss seinem System eine Art Testkapazität hinzufügen.
Paul Legato
2
Nun, eine Lösung besteht darin, 3 Apps zu haben -> Live, QA und Dev. Wenn Ihre Haupt-App apps.facebook.com/ohnice/ QA ist und dev sein kann, ist apps.facebook.com/ohnice_qa_sd/ apps.facebook.com/ohnice_dev_fg/ ja, etwas Zufälliges, damit Sie in Ihrem Haus keine unerwünschten Besucher haben ist nicht ordentlich.
Tgkprog
1
@PaulLegato es ist jetzt fertig (nach Jahren ...). Sehen Sie sich meine Lösung oder eine der Lösungen mit der Testfunktion an.
Erdal G.

Antworten:

236

Es ist einfach genug, wenn Sie es herausfinden.

Öffnen Sie /etc/hosts(Unix) oder C:\WINDOWS\system32\drivers\etc\hosts.

Wenn Ihre Domain foo.com ist, fügen Sie diese Zeile hinzu:

127.0.0.1    local.foo.com

Öffnen Sie beim Testen local.foo.comIhren Browser und es sollte funktionieren.

freeall
quelle
4
Um Ihre Hosts-Datei auf dem MAC zu bearbeiten, führen Sie "sudo pico / private / etc / hosts" in Ihrem Terminal aus, bearbeiten Sie und drücken Sie "Strg + X", um zu speichern
Christoffer
@Christoffer: Ich glaube, dass / private / etc nur eine symbolische Verknüpfung zu / etc ist, also ist / etc / hosts und / private / etc / hosts dieselbe Datei.
freeall
1
Sie haben Recht ... aber einige von uns müssen mit dem Löffel gefüttert werden und "open / etc / hosts" zu sagen ist einfach nicht genug;) FB scheitert immer noch lokal mit dieser Lösung für mich. Ich benutze nicht die Facebook JS
Christoffer
5
Das hat bis vor kurzem bei mir funktioniert, aber jetzt erhalte ich eine connection refusedAusnahme beim Versuch, mich anzumelden, wahrscheinlich aufgrund einer Änderung auf der Facebook-Seite. Ideen für eine Problemumgehung werden sehr geschätzt.
Onurmatik
1
Wenn Sie dies tun, um auf eine lokal ausgeführte Rails-App zuzugreifen, müssen Sie möglicherweise local.foo.com: 3000` in Ihrem Browser besuchen, da Rails-Apps normalerweise an diesem Port ausgeführt werden.
David Tuite
102

Bearbeiten Sie Ihre App unter www.facebook.com/developers/ und setzen Sie die "Site-URL" auf "http: // localhost / myapppath".

Wenn Sie fertig sind, ändern Sie es wieder.

Alex
quelle
19
Facebook "verbindet" sich nicht wieder mit Ihrem Server. Ihr JS tut es. Und der JS läuft im Kontext Ihres Browsers. Welches weiß, wohin "localhost" zeigt.
Alex
Ich würde nicht " localite " hinzufügen , ich musste sicherstellen, dass ich einen Punkt darin hatte. Dies funktionierte: " local.site "
Pete
Einige FB-Funktionen funktionieren damit nicht. Beispiel: Speichern Sie Erfolge auf FB-Servern. Es will HTTPS, also funktioniert mein Localhost-Trick nicht :(
Kostadin
2
Es ist erwähnenswert, dass die Validierung auf dem App-Formular erfordert, dass Sie localhost in der URL verwenden, z. B. http://localhost/myappanstatthttp://myapp
Graham
1
Wenn Sie einen anderen Port verwenden, verwenden Sie dieses Muster: localhost: xxxx ), zum Beispiel: localhost: 8080
m0z4rt
77

Ich schlage vor, eine Test-App (nur für Entwicklungsumgebungen) unter https://developers.facebook.com/apps zu erstellen und die Website with Facebook LoginEigenschaft : auf die Einstellungen für localhost: [port] festzulegen.
Diese Option funktioniert einwandfrei, ohne dass die Hosts gewechselt werden müssen. Denken Sie
daran, die AppId wieder in Ihre Produktions-App zu ändern, sobald Sie live gehen.

Bearbeiten - in der neuesten fb-Version finden Sie es unter der settingsRegisterkarte. Geben Sie hier die Bildbeschreibung ein

Sagiv Ofek
quelle
2
Oder verwenden Sie einfach separate Konfigurationsdateien für, dev, staging und live.
Chris Barry
1
"Website mit Facebook-Login" kann nicht mehr gefunden werden.
Yehe
5
Es scheint, dass Sie auf die große graue horizontale Schaltfläche "+ Plattform hinzufügen" klicken müssen. Dort haben Sie "Website"
Luciano
75

Facebook hat Testversionen hinzugefügt.

Fügen Sie zunächst eine Testversion Ihrer Anwendung hinzu: Erstellen Sie eine Test-App

Test-App erstellen

Ändern Sie dann die Site-URL unter Website in " http: // localhost " und klicken Sie auf "Änderungen speichern"

Geben Sie hier die Bildbeschreibung ein

Das ist alles, aber seien Sie vorsichtig: App-ID und App Secret- Schlüssel unterscheiden sich für die Anwendung und ihre Testversionen!

Erdal G.
quelle
Was ist App Domain im Einstellungsfeld? Ich entwickle ionische App mit Facebook Login
Chirag Thaker
1
@Chiragthaker Es ist die Domain, in der die Produktions-App gehostet wird
Erdal G.
3
Dies ist in meinem Fall eine viel bessere Antwort als das Bearbeiten der hostsDatei, da auf meinem Testserver kein HTTPS verwendet werden muss.
Petr Dlouhý
39

Sie müssen nichts Schwieriges tun!

Facebook → Einstellungen → Basis:
Schreiben Sie " localhost " in das Feld " App Domains" und klicken Sie auf " + Plattform hinzufügen ". Wählen Sie " Website " .

Danach schreiben Sie in das Feld " Site Url " Ihre localhost-URL
(zB :)http://localhost:1337/something .

Auf diese Weise können Sie Ihre Facebook-Plugins lokal testen.

Schneemann
quelle
1
Gibt es eine Problemumgehung für Dateien in der Pfaddatei: /// android_assets / www? Facebook wird diesen Pfad für die Website-URL nicht zulassen
Vignesh Subramanian
muss jetzt https sein
Simon_Weaver
@ Simon_Weaver Woher haben Sie diese Informationen? ist es irgendwo dokumentiert?
Kolistivra
@Simon_Weaver von diesem Link, den Sie gesendet haben: "Sie können weiterhin HTTP mit" localhost "-Adressen verwenden, jedoch nur, solange sich Ihre App noch im Entwicklungsmodus befindet."
Kolistivra
5

Facebook deaktiviert scheinbar zufällig die Möglichkeit, localhost als Domain in Ihrer Facebook-App festzulegen. Ich fand es am einfachsten, meinen lokalen Host ins Web zu tunneln. Dies kann kostenlos über http://progrium.com/localtunnel/ oder mit einer benutzerdefinierten URL (einfacher, da Sie die URL nicht jedes Mal in Facebook ändern müssen) https://showoff.io erfolgen

rio517
quelle
3
Eine andere Tunnelwahl ist ngrok.com
Mohamed Selim
3

Ich konnte die anderen Lösungen nicht verwenden ... Was für mich funktioniert hat, war die Installation von LocalTunnel.net (https://github.com/danielrmz/localtunnel-net-client) und die Verwendung der resultierenden URL auf Facebook.

Alan Cardoso
quelle
1

Es sieht so aus, als hätte FB gerade die App-Entwicklungsseite erneut geändert und eine Funktion namens "Server IP Whitelist" hinzugefügt.

  1. Gehen Sie zu Ihrer App und wählen Sie Einstellungen -> Registerkarte Erweitert
  2. Holen Sie sich Ihre öffentliche IP (Google sagt Ihnen, wenn Sie "Whats My IP" googeln)
  3. Fügen Sie Ihre öffentliche IP zur Server-IP-Whitelist hinzu und klicken Sie unten auf Änderungen speichern
Siebensieben
quelle
Was ist, wenn mehrere Entwickler von verschiedenen Standorten auf der Site arbeiten? Wir verwenden VM (Vagrant), daher ist die IP für jeden Entwickler gleich. Leider erlaubt Facebook nicht, lokale IPs in der Whitelist zu verwenden. Es funktioniert nicht.
ProblemsOfSumit
Wenn ich Ihren Kommentar richtig lese, sollte dies kein Problem sein. Sie müssen Ihre öffentliche IP-Adresse eingeben, die für jeden Entwickler gleich ist (haben Sie gemeint, dass sie NICHT gleich ist)? Wenn Sie mehrere Entwickler an verschiedenen Standorten mit unterschiedlichen IPs haben, können Sie ein VPN verwenden, um den gesamten Datenverkehr über 1 IP zu leiten.
Sevensevens
Nein, die öffentliche IP für verschiedene Computer an verschiedenen Standorten ist natürlich nicht dieselbe, nur die lokale IP auf jedem Computer ist dieselbe. (zB localhost). Ich möchte nichts routen. Im Moment verwende ich localhost (nur ein Beispiel) in der FB-App - was gut funktioniert. Aber ich brauche eine Lösung, sobald die Seite online geht. Facebook erlaubt es, "Test-Apps" in einer App zu erstellen, das mag die Lösung sein, aber ich habe es noch nicht ausprobiert. EDIT: scheint das ist die Lösung
ProblemsOfSumit
1

Gehen Sie zur Canvas-Seite. Zeigen Sie sie im Browser an. Kopieren Sie den Text der Adressleiste. Gehen Sie jetzt zu Ihrer Facebook-App und bearbeiten Sie die Einstellungen

In der Website, in der Website-URL, fügen Sie diese Adresse ein

Fügen Sie bei der Facebook-Integration diese Adresse erneut in die Canvas-URL ein

und auch der gleiche Code, wo immer Sie Canvas-URL oder Redirect-URL benötigen.

hoffe es wird helfen ..

Sangeeta Saharan
quelle
-6

Erstellen Sie 2 Apps und

In /initializers/env_variables.rb

if Rails.env == 'development'
    ENV['FB_APP_ID'] = "HERE"
    ENV["FB_SECRET"] = "HERE"
else
    ENV['FB_APP_ID'] = "HERE"
    ENV["FB_SECRET"] = "HERE"
end
funkeln
quelle