OAuth: como testar com URLs locais?

154

Estou tentando testar os botões OAuth , mas todos (Facebook, Twitter, LinkedIn) retornam com erros que parecem sinalizar que não posso testá-los ou usá-los em um URL local .

Como as pessoas geralmente trabalham no desenvolvimento com coisas do OAuth, se todas parecem exigir um ambiente de conexões não-dev e não-local ?

Maravilha
fonte
Eu respondi em que volta em algum momento: stackoverflow.com/a/10410838/604511
Jesvin Jose

Respostas:

133

Atualize outubro de 2016 : Mais fácil agora: use lvh.me que sempre aponta para 127.0.0.1.

Resposta anterior :

Como a solicitação de retorno de chamada é emitida pelo navegador, como uma resposta de redirecionamento HTTP, você pode configurar o arquivo .hosts ou equivalente para apontar um domínio que não localhostseja 127.0.0.1.

Digamos, por exemplo, você registrar o seguinte callback com o Twitter: http://www.publicdomain.com/callback/. Certifique-se de que www.publicdomain.comaponta para 127.0.0.1 no arquivo hosts e que o twitter possa fazer uma pesquisa de DNS bem-sucedida em www.publicdomain.com, ou seja, o domínio precisa existir e o retorno de chamada específico provavelmente deve retornar uma mensagem de status 200, se solicitado.

EDIT :

Acabei de ler o seguinte artigo: http://www.tonyamoyal.com/2009/08/17/how-to-quickly-set-up-a-test-for-twitter-oauth-authentication-from-your-local -machine / , que foi vinculado a esta pergunta: Twitter oAuth callbackUrl - desenvolvimento de host local .

Para citar o artigo:

Você pode usar o bit.ly, um serviço de redução de URL. Apenas reduza o [URL do host local, como http // localhost: 8080 / twitter_callback] e registre o URL reduzido como retorno de chamada no seu aplicativo do Twitter.

Isso deve ser mais fácil do que mexer no arquivo .hosts.

Observe que agora (agosto '14) o bit.ly não está permitindo o encaminhamento de link para o host local; no entanto, o encurtador de link do Google funciona.

Edição do PS: (Nov '18): o encurtador de link do Google parou de dar suporte ao host local ou 127.0.0.1.

Jon Nylander
fonte
3
Eu pensei que o servidor estava chamando o retorno de chamada e agora percebo que oauth usa o cliente como um mensageiro e nenhuma conexão é feita entre os servidores, o que torna muito mais simples.
21915 Kristian Benoit
10
Vale a pena notar que o lvh.me é de propriedade de um senhor chamado Levi Cook (consulte gist.github.com/levicook/563675 ) e é de propriedade privada. Ele parece ser um cara legal, mas não é um domínio autorizado formal por uma autoridade global; portanto, pode "teoricamente" parar de funcionar em algum momento.
Mario Peshev
4
Até o momento, o Google parece não permitir extensões de domínio sofisticadas (como .me) em URLs de redirecionamento. Como resultado, o lvh.me não estava funcionando. Encontrei sucesso com o lacolhost.com .
PullJosh
3
O proprietário do lvh.me também poderia começar a recolher todos os seus códigos de autorização ...
Taylor Buchanan
2
@JonNylander Eles poderiam facilmente alterar seus registros DNS para apontar para outro site que armazena de forma transparente o código e o estado de autenticação e ainda redireciona de volta para o host local. A menos que você verifique o DNS regularmente, você não notará até que eles já tenham acesso. Os únicos que notariam imediatamente são as pessoas que o usam fora de um contexto do navegador.
Taylor Buchanan
18

Ou você pode usar https://tolocalhost.com/ e configurar como ele deve redirecionar um retorno de chamada para o site local. Você pode especificar o nome do host (se diferente do localhost, ou seja, yourapp.local e o número da porta). Apenas para fins de desenvolvimento.

Jørgen
fonte
13

Você também pode usar o ngrok: https://ngrok.com/ . Eu o uso o tempo todo para ter um servidor público em execução no meu host local. Espero que isto ajude.

Outras opções que até fornecem seu próprio domínio personalizado gratuitamente são serveo.net e https://localtunnel.github.io/www/

user4848830
fonte
1
Isso foi mais fácil do que pensei! Apenas criei minha conta, instalei e executei ./ngrok http 8080 -host-header="localhost:8080"e eu estava executando com um URL público.
Miguel Reyes
3

O Google não permite a API de autenticação de teste no host local usando http://webporject.devou .loc.etc e o link curto do Google, que também diminuíram seu URL local ( http://webporject.dev) bit.ly:). O Google aceita apenas URL que começa http://localhost/...

Se você quiser testar a API de autenticação do Google, siga estas etapas ...

definir novo alias

se você usar, openservervá para o painel de configurações, clique em aliases tabe clique no menu suspenso e encontre localhoste escolha.

agora você deve escolher sua pasta raiz do projeto web local clicando no próximo menu suspenso ao lado do primeiro menu suspenso.

e clique em um botão chamado adde reinicie o opensever.

agora seu projeto local disponível neste link http://localhost/ também é possível colar esse URL local no google auth api no redirect urlcampo ...

Akbar Mirsiddikov
fonte
3

Você pode editar o arquivo hosts no Windows ou Linux Windows: C: \ Windows \ System32 \ Drivers \ etc \ hosts Linux: / etc / hosts

A resolução de nomes de host local é tratada no próprio DNS.

127.0.0.1 mywebsite.com

depois de terminar seus testes, basta comentar a linha que você adiciona para desativá-la

127.0.0.1 mywebsite.com

ramzieus
fonte
Funcionou para mim, obrigado. Além disso, se você usar por exemplo Node.js na porta 3000, o uso mywebsite.com:3000
flow3r
3

Para usuários de Mac, edite o /etc/hostsarquivo. Você deve usar sudo vi /etc/hostsse for somente leitura. Após a autorização, o servidor oauth envia a URL de retorno de chamada e, como essa URL de retorno é renderizada no navegador local, a configuração de DNS local funcionará:

127.0.0.1       mylocal.com
Gireesh
fonte
0

Tomando o Google OAuth como referência

  • Na guia Cliente OAuth

    1. Adicione seu exemplo de URI do aplicativo(http://localhost:3000) aos URIs de origem do JavaScript autorizado
  • Na tela de consentimento do OAuth

    1. Adicionar mywebsite.coma domínios autorizados
  • Edite o arquivo hosts no windows ou linux Windows C:\Windows\System32\Drivers\etc\hosts Linux : /etc/hostspara adicionar 127.0.0.1 mywebsite.com (NB Comente se houver algum outro 127.0.0.1)

akash
fonte