Como testar o Facebook Connect localmente

193

Eu uso as APIs ASP .NET e Facebook Connect. mas quando executo o aplicativo e pressiono o botão Conectar, ele retorna ao site e não ao servidor local de teste ( http: // localhost: xxxx / test.aspx ). Como posso testar o Facebook localmente (por exemplo, como posso alterar o URL de retorno de chamada)?

Haytham
fonte
4
A resposta está aqui: forum.developers.facebook.com/viewtopic.php?pid=116136 você deve editar o arquivo 'C: \ WINDOWS \ system32 \ drivers \ etc \ hosts' para fazer com que seu domínio chegue ao seu localHost
Haytham
101
Este sistema parece ter sido mal implementado por parte do Facebook. Não parece ter ocorrido a eles que alguém iria querer testar o recurso, exceto em um servidor ativo. As duas soluções fornecidas aqui - editar o arquivo de hosts locais para falsificar o servidor de produção e redirecioná-lo para o localhost, e alterar temporariamente a URL de produção ao vivo no Facebook para localhost, são um design notavelmente ruim da parte do Facebook. O Facebook precisa adicionar algum tipo de capacidade de teste ao seu sistema.
Paul Legato 13/10
2
Bem, uma solução é ter três aplicativos -> ao vivo, controle de qualidade e desenvolvimento. Portanto, se seu aplicativo principal é apps.facebook.com/ohnice/ QA e dev pode ser apps.facebook.com/ohnice_qa_sd/ é apps.facebook.com/ohnice_dev_fg/ sim algo aleatório, para que você não tenha visitantes indesejados em sua casa não é arrumado.
tgkprog
1
@PaulLegato está feito agora (depois de anos ...). Veja minha solução ou uma das soluções usando o recurso de teste.
Erdal G.

Respostas:

236

É bastante simples quando você descobre.

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

Se seu domínio for foo.com, adicione esta linha:

127.0.0.1    local.foo.com

Quando você estiver testando, abra local.foo.comno seu navegador e ele deve funcionar.

freeall
fonte
4
Para editar o arquivo hosts do MAC, em seguida, executar "sudo pico / private / etc / hosts" em seu terminal, editar e pressione "Ctrl X" para salvar
Christoffer
@Christoffer: Eu acredito que / private / etc é apenas um link simbólico para / etc, então / etc / hosts e / private / etc / hosts são o mesmo arquivo.
Freeall
1
Você está certo ... mas alguns de nós precisam dar uma colher e dizer "abrir / etc / hosts" simplesmente não é suficiente;) O FB ainda está falhando localmente com esta solução para mim. Eu não estou usando o facebook JS
Christoffer
5
isso costumava funcionar para mim até recentemente, mas agora estou recebendo uma connection refusedexceção ao tentar fazer login, provavelmente devido a uma alteração no lado do facebook. quaisquer idéias de uma solução alternativa são muito apreciadas.
11133 onurmatik
1
Se você estiver fazendo isso para acessar um aplicativo Rails em execução local, poderá ter de visitar local.foo.com: 3000` no seu navegador, pois os aplicativos Rails geralmente são executados nessa porta.
David Tuite
102

Edite seu aplicativo em www.facebook.com/developers/ e defina o "URL do site" como "http: // localhost / myapppath".

Quando terminar - mude de volta.

Alex
fonte
19
O Facebook não "se conecta" ao seu servidor. O JS deles faz. E o JS é executado no contexto do seu navegador. Que sabe para onde "localhost" aponta.
22412 Alex
Não me permitia adicionar " site local ", eu tinha que ter certeza de que havia um ponto lá. Isso funcionou: " local.site "
Pete
Alguns recursos do FB não funcionam com isso. Por exemplo - salve conquistas nos servidores FB. Ele quer HTTPS, assim que meu truque localhost não está funcionando :(
Kostadin
2
vale a pena notar que a validação no formulário do aplicativo exige que você use o host local no URL, por exemplo, em http://localhost/myappvez dehttp://myapp
graham
1
se você usar outra porta, use este padrão: localhost: xxxx ), por exemplo: localhost: 8080
m0z4rt
77

Sugiro a criação de um aplicativo de teste (apenas para o ambiente de desenvolvimento) em https://developers.facebook.com/apps e defina: Website with Facebook Loginproperty para as configurações localhost: [port] .
essa opção funcionará bem sem a necessidade de alterar os hosts.
lembre-se de alterar o appId novamente para o seu aplicativo de produção assim que for lançado.

Editar - na versão mais recente do fb, você a encontrará na settingsguia. insira a descrição da imagem aqui

Sagiv Ofek
fonte
2
Ou apenas use arquivos de configuração separados para, dev, teste e live.
Chris Barry
1
Não é mais possível encontrar o "site com login no Facebook".
yehe
5
Parece que você precisa clicar no botão horizontal cinza grande "+ Adicionar plataforma". Lá você tem "Website"
Luciano
75

O Facebook adicionou o recurso de versões de teste.

Primeiro, adicione uma versão de teste do seu aplicativo: Criar aplicativo de teste

Criar aplicativo de teste

Em seguida, altere o URL do site para " http: // localhost " em Site e pressione Salvar alterações.

insira a descrição da imagem aqui

Isso é tudo, mas tenha cuidado: as chaves ID do aplicativo e Segredo do aplicativo são diferentes para o aplicativo e suas versões de teste!

Erdal G.
fonte
o que é domínio de aplicativo no painel de configurações. Estou desenvolvendo aplicativo iônica com login facebook
Chirag Thaker
1
@Chiragthaker É o domínio onde será hospedado o aplicativo de produção
Erdal G.
3
Essa é uma resposta muito melhor no meu caso, do que editar o hostsarquivo, porque não requer o uso de HTTPS no meu servidor de teste.
Petr Dlouhý
39

Você não precisa fazer nada difícil!

Facebook → Configurações → Básico:
escreva " localhost " no campo " App Domains" e clique em " + Add Platform ", escolha " Web Site " .

Depois disso, na " URL do site " campo de escrever o seu url localhost
(por exemplo: http://localhost:1337/something).

Isso permitirá que você teste seus plugins do facebook localmente.

Boneco de neve
fonte
1
existe uma solução alternativa para arquivos no arquivo de caminho: /// android_assets / www? facebook não vai permitir que esse caminho para a url do site
Vignesh Subramanian
deve ser https agora
Simon_Weaver
@Simon_Weaver De onde você obteve essas informações? está documentado em algum lugar?
Kolistivra
@Simon_Weaver a partir desse link que você enviou: "Você ainda poderá usar HTTP com endereços" localhost ", mas apenas enquanto o aplicativo ainda estiver no modo de desenvolvimento."
Kolistivra
5

O Facebook aparentemente desativa aleatoriamente a capacidade de definir o host local como um domínio em seu aplicativo do Facebook. Achei que a solução mais fácil era encapsular meu host local para a web. Isso pode ser feito gratuitamente usando http://progrium.com/localtunnel/ ou com um URL personalizado (mais fácil, pois você não precisa alterar o URL sempre no facebook) https://showoff.io

rio517
fonte
3
outra opção de túnel é ngrok.com
Mohamed Selim
3

Não pude usar as outras soluções ... O que funcionou para mim foi instalar o LocalTunnel.net (https://github.com/danielrmz/localtunnel-net-client) e depois usar o URL resultante no Facebook.

Alan Cardoso
fonte
1

Parece que o FB mudou a página de desenvolvimento do aplicativo novamente e adicionou um recurso chamado "Lista de permissões de IP do servidor".

  1. Vá para o seu aplicativo e selecione Configurações -> Guia Avançado
  2. Obtenha seu IP público (o Google informará se você pesquisar "O que é meu IP")
  3. Adicione seu IP público à lista de permissões de IP do servidor e clique em Salvar alterações na parte inferior
sevensevens
fonte
e se vários desenvolvedores de locais diferentes estiverem trabalhando no site? Usamos VM (Vagrant) para que o IP seja o mesmo para todos os desenvolvedores. Infelizmente, o facebook não permite o uso de IPs locais na lista de permissões. Isso não funciona.
problema foi
Se estou lendo seu comentário corretamente, isso não deve ser um problema. Você precisa inserir seu IP público, que você diz ser o mesmo para cada desenvolvedor (você quis dizer NÃO é o mesmo). Se você tiver vários desenvolvedores em sites diferentes com IPs diferentes, poderá usar uma VPN para rotear todo o tráfego por 1 IP.
sevensevens
não, o IP público de máquinas diferentes em locais diferentes não é, obviamente, o mesmo, apenas o IP local em cada máquina é o mesmo. (por exemplo, localhost). Não quero encaminhar nada. Por enquanto, estou usando o localhost (apenas um exemplo) no aplicativo FB - que funciona bem. Mas preciso de uma solução assim que a página for publicada. O Facebook permite criar "Test-Apps" dentro de um aplicativo, que pode ser a solução, mas ainda não o tentei. EDIT: Parece que é a solução
ProblemsOfSumit
1

vá para a página da tela. visualize-a no navegador. copie o texto da barra de endereço. agora vá para o seu aplicativo do facebook, vá para editar configurações

no site, no URL do site cole esse endereço

na integração do facebook, cole novamente o endereço no URL da tela

e também o mesmo código sempre que você precisar de um URL de tela ou de redirecionar.

espero que ajude ..

Sangeeta Saharan
fonte
-6

Crie 2 aplicativos e

Em /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
brilhar
fonte