Comment tester Facebook Connect localement

193

J'utilise les API ASP .NET et Facebook Connect. mais lorsque j'exécute l'application et que j'appuie sur le bouton Connecter, je reviens au site Web et non au serveur local de test qui est ( http: // localhost: xxxx / test.aspx ). Alors, comment puis-je tester Facebook localement (c'est-à-dire comment je peux changer URL de rappel) ?

Haytham
la source
4
La réponse est ici: forum.developers.facebook.com/viewtopic.php?pid=116136 vous devez éditer le fichier 'C: \ WINDOWS \ system32 \ drivers \ etc \ hosts' pour que votre domaine accède à votre hôte local
Haytham
101
Ce système semble être assez mal implémenté de la part de Facebook. Il ne semble pas leur être venu à l'esprit que quiconque voudrait tester la fonctionnalité autrement que sur un serveur en direct. Les deux solutions données ici - éditer le fichier d'hôtes local pour usurper le serveur de production et le rediriger vers localhost, et changer temporairement l'URL de production en direct sur Facebook en localhost, sont toutes deux remarquablement mal conçues de la part de Facebook. Facebook doit ajouter une sorte de capacité de test à son système.
Paul Legato
2
Eh bien, une solution consiste à avoir 3 applications -> live, QA et Dev. Donc, si votre application principale est apps.facebook.com/ohnice/ QA et que le dev peut être est apps.facebook.com/ohnice_qa_sd/ est apps.facebook.com/ohnice_dev_fg/ oui quelque chose de aléatoire afin que vous n'ayez pas de visiteurs indésirables dans votre maison n'est pas bien rangé.
tgkprog
1
@PaulLegato c'est fait maintenant (après des années ...). Voir ma solution ou l'une des solutions utilisant la fonction de test.
Erdal G.19

Réponses:

236

C'est assez simple quand vous le découvrez.

Ouvrez /etc/hosts(unix) ou C:\WINDOWS\system32\drivers\etc\hosts.

Si votre domaine est foo.com, ajoutez cette ligne:

127.0.0.1    local.foo.com

Lorsque vous testez, ouvrez local.foo.comdans votre navigateur et cela devrait fonctionner.

freeall
la source
4
Pour éditer votre fichier d'hôtes sur MAC puis lancez "sudo pico / private / etc / hosts" dans votre terminal, éditez et appuyez sur "ctrl X" pour sauvegarder
Christoffer
@Christoffer: Je pense que / private / etc n'est qu'un lien symbolique vers / etc, donc / etc / hosts et / private / etc / hosts est le même fichier.
freeall
1
Vous avez raison ... mais certains d'entre nous doivent être nourris à la cuillère et dire "open / etc / hosts" n'est tout simplement pas suffisant;) FB échoue toujours localement avec cette solution pour moi. Je n'utilise pas le facebook JS
Christoffer
5
Cela fonctionnait pour moi jusqu'à récemment, mais maintenant je reçois une connection refusedexception lorsque j'essaie de me connecter, probablement en raison d'un changement sur le côté Facebook. toute idée de solution de contournement est très appréciée.
onurmatik
1
Si vous faites cela pour accéder à une application Rails exécutée localement, vous devrez peut-être visiter local.foo.com: 3000` dans votre navigateur car les applications Rails sont généralement exécutées sur ce port.
David Tuite du
102

Modifiez votre application sur www.facebook.com/developers/ et définissez "URL du site" sur "http: // localhost / myapppath".

Une fois terminé, changez-le.

Alex
la source
19
Facebook ne se "reconnecte" pas à votre serveur. Leur JS le fait. Et le JS s'exécute dans le contexte de votre navigateur. Qui sait où "localhost" pointe.
Alex
Cela ne me laisserait pas ajouter " localsite ", je devais m'assurer d'avoir un point dedans. Cela a fonctionné: " local.site "
Pete
Certaines fonctionnalités FB ne fonctionnent pas avec cela. Par exemple, enregistrez les réalisations sur les serveurs FB. Il veut HTTPS, donc mon astuce localhost ne fonctionne pas :(
Kostadin
2
il est à noter que la validation sur le formulaire d'application vous oblige à utiliser localhost dans l'url, par exemple http://localhost/myappplutôt quehttp://myapp
graham
1
si vous utilisez un autre port, utilisez ce modèle: localhost: xxxx ), par exemple: localhost: 8080
m0z4rt
77

Je suggère de créer une application de test (pour l'environnement de développement uniquement) sur https://developers.facebook.com/apps et de définir la Website with Facebook Loginpropriété : votre localhost: [port] paramètres.
cette option fonctionnera bien sans avoir besoin de changer d'hôtes.
n'oubliez pas de changer l' appId de nouveau à votre application de production une fois que vous serez en ligne.

Modifier - dans la dernière version fb, vous le trouverez sous l' settingsonglet. entrez la description de l'image ici

Sagiv Ofek
la source
2
Ou utilisez simplement des fichiers de configuration séparés pour, dev, staging et live.
Chris Barry
1
Impossible de trouver "Site Web avec connexion Facebook".
yehe
5
Il semble que vous devez cliquer sur le gros bouton horizontal gris "+ Add Platform". Là, vous avez "Site Web"
Luciano
75

Facebook a ajouté une fonctionnalité de versions de test.

Tout d'abord, ajoutez une version de test de votre application: Créer une application de test

Créer une application de test

Ensuite, modifiez l' URL du site en " http: // localhost " sous Site Web et appuyez sur Enregistrer les modifications

entrez la description de l'image ici

C'est tout, mais attention: les identifiants App ID et App Secret sont différents pour l'application et ses versions de test!

Erdal G.
la source
qu'est-ce que App Domain dans le panneau des paramètres. Je développe une application ionique avec une connexion Facebook
Chirag Thaker
1
@Chiragthaker C'est le domaine où sera hébergée l'application de production
Erdal G.
3
C'est une bien meilleure réponse dans mon cas, que la modification du hostsfichier, car elle ne nécessite pas d'utiliser HTTPS sur mon serveur de test.
Petr Dlouhý
39

Vous n'avez rien à faire de difficile!

Facebook → Paramètres → base:
écriture « localhost » dans le « App Domaines » champ puis cliquez sur « + Ajouter plate - forme » choisir « Site Web » .

Après cela, dans le champ " Site Url " , écrivez votre URL localhost
(par exemple :)http://localhost:1337/something .

Cela vous permettra de tester vos plugins facebook localement.

Bonhomme de neige
la source
1
existe-t-il une solution de contournement pour les fichiers dans le fichier de chemin: /// android_assets / www? Facebook n'autorisera pas ce chemin pour l'URL du site
Vignesh Subramanian
doit être https maintenant
Simon_Weaver
@Simon_Weaver d'où avez-vous obtenu ces informations? est-ce documenté quelque part?
kolistivra
@Simon_Weaver à partir du lien que vous avez envoyé: "Vous pourrez toujours utiliser HTTP avec des adresses" localhost ", mais uniquement pendant que votre application est encore en mode de développement."
kolistivra
5

Facebook désactive apparemment de manière aléatoire la possibilité de définir localhost comme domaine sur votre application facebook. J'ai trouvé que le travail le plus simple était de tunneler mon hôte local sur le Web. Cela peut être fait gratuitement en utilisant http://progrium.com/localtunnel/ ou avec une URL personnalisée (plus facile car vous n'avez pas à changer d'URL à chaque fois dans Facebook) https://showoff.io

rio517
la source
3
un autre choix de tunnel est ngrok.com
Mohamed Selim
3

Je ne pouvais pas utiliser les autres solutions ... Ce qui a fonctionné pour moi a été d'installer LocalTunnel.net (https://github.com/danielrmz/localtunnel-net-client), puis d'utiliser l'URL résultante sur Facebook.

Alan Cardoso
la source
1

On dirait que FB vient de changer à nouveau la page de développement de l'application et a ajouté une fonctionnalité appelée "Liste blanche des serveurs IP".

  1. Accédez à votre application et sélectionnez Paramètres -> onglet Avancé
  2. Obtenez votre IP publique (Google vous dira si vous google "Whats My IP")
  3. Ajoutez votre adresse IP publique à la liste blanche d'adresses IP du serveur et cliquez sur Enregistrer les modifications en bas
septsevens
la source
que faire si plusieurs développeurs de différents emplacements travaillent sur le site? Nous utilisons VM (Vagrant) donc l'IP est la même pour chaque développeur. Malheureusement, Facebook ne permet pas d'utiliser les adresses IP locales dans la liste blanche. Ça ne marche pas.
ProblemsOfSumit
Si je lis bien votre commentaire, cela ne devrait pas poser de problème. Vous devez mettre votre adresse IP publique, qui, selon vous, est la même pour chaque développeur (vouliez-vous dire que ce n'est PAS le même). Si vous avez plusieurs développeurs sur différents sites avec différentes IP, vous pouvez utiliser un VPN pour acheminer tout le trafic via 1 IP.
sevensevens
non, l'IP publique pour différentes machines sur différents emplacements n'est bien sûr pas la même, juste l'IP locale sur chaque machine est la même. (par exemple localhost). Je ne veux rien acheminer. Pour l'instant, j'utilise localhost (juste un exemple) dans l'application FB - qui fonctionne très bien. Mais j'ai besoin d'une solution une fois la page mise en ligne. Facebook permet de créer des "Test-Apps" à l'intérieur d'une App, cela peut être la solution mais je ne l'ai pas encore essayé. EDIT: semble que c'est la solution
ProblemsOfSumit
1

aller à la page de canevas .. l'afficher dans le navigateur .. copier le texte de la barre d'adresse. allez maintenant dans votre application facebook allez modifier les paramètres

dans le site Web, dans l'URL du site, collez cette adresse

dans l'intégration facebook, collez à nouveau cette adresse dans l'url du canevas

et aussi le même code partout où vous avez besoin d'une URL de canevas ou d'une URL de redirection.

j'espère que cela vous aidera ..

Sangeeta Saharan
la source
-6

Créez 2 applications et

Dans /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
scintillait
la source