Facebook OAuth "O domínio deste URL não está incluído no domínio do aplicativo"

248

Deixe-me começar dizendo que procurei uma resposta para essa pergunta há algum tempo ...

Estou tentando configurar o OAuth do Facebook para funcionar com meu aplicativo que está sendo desenvolvido localmente na minha máquina. Tudo estava funcionando perfeitamente com a autorização do Facebook, até que eu deixei de usar localhostoutro nome de domínio (ainda local na minha máquina.) Agora, estou recebendo o seguinte erro.

Não é possível carregar o URL: o domínio deste URL não está incluído nos domínios do aplicativo. Para poder carregar esse URL, adicione todos os domínios e subdomínios do seu aplicativo ao campo Domínios do aplicativo nas configurações do seu aplicativo.

O arquivo Meus hosts contém 127.0.0.1 photovote.dev (funciona perfeitamente)

Meu redirecionamento no meu aplicativo (usando Socialite) é http://photovote.dev/auth/facebook/callback

Nas minhas configurações de aplicativos do Facebook ...

  • meu domínio de aplicativo é photovote.dev
  • o URL do meu site é http://photovote.dev/
  • meus URIs de redirecionamento OAuth válidos são http://photovote.dev/auth/facebook/callback

O URL no momento da mensagem de erro é ..

https://www.facebook.com/v2.5/dialog/oauth?client_id=XXXXXXXXXXXXXXX&redirect_uri=http%3A%2F%2Fphotovote.dev%2Fauth%2Ffacebook%2Fcallback&scope=email&response_type=codeZTTWWTJ

Estou sem saber qual é o problema ...

Captura de tela 1
Captura de tela

Captura de tela 2 insira a descrição da imagem aqui

dangel
fonte
3
Oi dangel, você pode querer ofuscar seu client_id FB a partir deste post
a.benain
Dangel @ como você resolveu este problema? Estou tendo o mesmo problema, mas não é capaz de resolver.
Ghimire
@Ghimire, na minha situação, eu havia alterado a URL e não atualizei meu cliente \ segredo. Ao ler as soluções abaixo, parece que pode haver várias razões diferentes, todas dando o mesmo erro.
dangel
@dangel verifique isso. stackoverflow.com/questions/46626914/…
Ghimire 8/17

Respostas:

81

Isso geralmente acontece se você tiver inserido os detalhes incorretos quando criou o aplicativo no Facebook. Ou você alterou os URLs de um aplicativo existente?

Você pode verificar novamente as configurações do seu aplicativo nesta página?

https://developers.facebook.com/apps

  1. Selecione o aplicativo correto e clique no botão editar;

  2. Verifique se os URLs e os caminhos foram inseridos corretamente e estão apontando para o site em que você instalou o plugin Ultimate Facebook.

Lei Lionel
fonte
3
Eu só agora vi o que você disse sobre "você mudou a URL do de um aplicativo existente", que é exatamente o que aconteceu, e eu acho que causou um novo cliente \ segredo ID a ser gerado
dangel
Olá, também estou tentando implementar o fb oauth no meu aplicativo. Eu dei todos os detalhes no aplicativo fb. Mas, o erro a seguir será exibido durante o redirecionamento de retorno de chamada. InternalOAuthError: falha ao obter o token de acesso em Strategy.OAuth2Strategy._createOAuthError (D: \ node_tutorials \ fb \ node_modules \ passport-oauth2 \ lib \ strategy.js: 370: 17) em D: \ node_tutorials \ fb \ node_modules \ passport-oauth2 \ lib \ strategy.js: 166: 45 em D: \ node_tutorials \ fb \ node_modules \ oauth \ lib \ oauth2.js: 177: 18
Anand
Outra coisa a experimentar que funcionou para mim: tente alternar seus retornos de chamada de https para http. Isso envolve alterar o código que chama getLoginUrl () e alterar os URLs de retorno de chamada nas configurações do aplicativo. Os retornos de chamada nunca funcionaram com HTTPS para mim, por algum motivo, apesar do site usar HTTPS.
Josh1billion
Eu tenho o mesmo problema, mas ao abrir a página localmente; Eu adicionei 127.0.0.1:8000 para os endereços autorizados, como é como minha instalação easyphp está configurado, mas ainda não funciona. Posso testar apenas scripts FB online?!?
jumpjack 18/02/19
"clique no botão editar" ummm que botão é esse?
Alexander Mills
210

Caso alguém se depare com isso e procure essas configurações (como eu estava)

Voce tem que

  1. No lado esquerdo, clique em "+ Adicionar produto" e selecione "Login no Facebook" (estava no topo para mim)
  2. Veja as novas configurações disponíveis no lado esquerdo
  3. Agora você terá essas configurações de OAuth nas "Configurações do produto"

insira a descrição da imagem aqui

Informações adicionais: adicione o URL de retorno de chamada como http://localhost:3000ao Valid OAuth redirect URIscampo na página de configurações do login do Facebook

Craig Lambie
fonte
22
Não é a isso que a mensagem de erro se refere. Há uma mensagem de erro específica sobre URIs de redirecionamento válido do OAuth , que não é o que está acontecendo aqui. A mensagem refere-se claramente a Configurações »Básico» Domínios do aplicativo. No entanto, o problema é que, embora os domínios corretos sejam preenchidos, a mensagem de erro ainda aparece.
Fritzmg 26/10/19
À parte do dicionário urbano do @HakamFostok, o Maths reina em ordem superior pelo significado de LHS / RHS en.wikipedia.org/wiki/Sides_of_an_equation , especialmente no mundo da codificação.
Craig Lambie
9
Isso consertou para mim. Mesmo tendo preenchido o domínio corretamente, não adicionei um URL de redirecionamento. A adição do URL de redirecionamento corrigiu o problema. Parece que no momento o FB está enviando a mensagem de erro incorreta para esse problema.
Richard Garside
estou trabalhando localmente e esse é o meu URL 127.0.0.1/CM/public qual deve ser meu URI de redirecionamento válido do OAuth?
Youssef Boudaya
1
Isso funcionou para mim na api v2.7 e o comentário de @ RichardGarside é preciso. Eu não tinha nenhum valor definido Valid OAuth Redirect URIse a adição desse valor de campo resolveu a mensagem de erro incorreta do FB relacionada à atualização do seu App Domains.
johnsampson
60

Eu tive o mesmo problema. Eu o resolvi adicionando meu URI de redirecionamento OAuth como argumento à chamada de função getAccessToken:

$redirectLoginHelper->getAccessToken("https://www.example.com/myfacebookcallback")

Se nenhum argumento for enviado para essa função, o SDK gera o URI de redirecionamento por si só, o que deve funcionar, mas, no meu caso, não.

Espero que isso ajude alguém.

Swoot
fonte
2
Essa é a única maneira de fazê-lo funcionar depois de mudar meu site de http para https. Mesmo depois de alterar todos os domínios nas configurações da API do Facebook, simplesmente não funcionava.
Chris
6
Essa deve ser a resposta aceita. Resolve o problema!
precisa saber é
No meu caso, o próprio URL não deve incluir parâmetros vazios. Quando dou "www.example.com?param" ao getAccessToken, o FB sempre diz que não corresponde ao URI que forneci ao getLoginUrl, o que tenho certeza absoluta de que é exatamente o mesmo. O uso de "www.example.com" não gera esse erro.
Chlind 19/03/19
2
obrigado . resolvido por isso - muito ruim do facebook, porque todos esses erros são abstratos / ambígua e você não sabe onde também olhar
digitalzoomstudio
Isso responde à pergunta.
John John
35

Verifique se o seu aplicativo é público. Clique em + Adicionar produto Agora vá para produtos => Login no Facebook Agora faça o seguinte:

URIs de redirecionamento válidos do OAuth: example.com/

Desautorizar o URL de retorno de chamada: https://example.com/facebookapp http://unicodeitsolutions.com/

Sanjoy Kanrar
fonte
1
Para que é Deauthorize Callback URL : https://example.com/facebookappnecessário? Será que vai funcionar sem isso?
Jordânia
Desautorizar o URL de retorno de chamada não é obrigatório ... quando o usuário desautorizar nosso aplicativo, o facebook nos fará ping pelo URL.
Sanjoy Kanrar
20

Aqui está o que eu fiz para resolver esse problema: insira a descrição da imagem aqui

Basicamente:

1) Habilite " Login do OAuth do navegador incorporado "

2) Desative " Use o Strict Mode para redirecionar URIs " e insira um URI de redirecionamento como eu fiz.

3) Deixe todas as demais opções como estão.

4) Salve suas alterações.

5) Aproveite :)

bangbang
fonte
Isso resolveu para mim. Eu não queria tornar meu aplicativo público, pois estava apenas fazendo um tutorial e testando-o localmente. Obrigado @bangbang
PHBeagle
1
Para mim, o uso do modo restrito para URIs de redirecionamento não pode ser desativado.
Fdehanne 14/03/19
8

Eu tive o mesmo problema e veio de um client_id / ID de aplicativo do Facebook errado.

Você mudou seu aplicativo do Facebook para "público" ou "online"? Ao fazer isso, o Facebook cria um novo aplicativo com um novo ID de aplicativo.

Você pode comparar o valor do parâmetro "client_id" no URL com o valor no seu painel do Facebook.

guillaume.deslandes
fonte
Tudo o que fiz foi alterar o domínio e o URL do site para corresponder da alteração de localhost para photovote.dev. Atualizei o URI de redirecionamento no meu aplicativo e também nas configurações do Facebook. Eu só poderia tentar criar um novo aplicativo
dangel
hmm, acho que mudei algo nas configurações do aplicativo que causou a geração de um novo ID, porque você está certo de que não estava mais correspondendo. Talvez quando eu atualizei o URL do site? independentemente de que está funcionando novamente
dangel
Isso funcionou para mim. Estava usando um ID de aplicativo antigo na produção.
Marcus W
8

Do jeito que eu o corrigi: fui à caixa de texto URIs de redirecionamento de OAuth válidos e defina o URL exato , não apenas o domínio :

antes: https://my-website.com

depois de: https://my-website.com/facebookoauth/facebooklogin

(o URL pode ser diferente no seu caso, verifique-o na barra de endereços do navegador).

Isso foi causado pela configuração Use Strict Mode for Redirect URIs, que estava bloqueada na posição Yes.

Cosmin
fonte
Muito obrigado por isso. Este fixa o meu problema
vickris
7

Não é possível carregar o URL: o domínio deste URL não está incluído nos domínios do aplicativo. Para poder carregar esse URL, adicione todos os domínios e subdomínios do seu aplicativo ao campo Domínios do aplicativo nas configurações do seu aplicativo.

Eu tive esse problema hoje, acho a documentação do Facebook e o SDK desrespeitoso e convincente em relação a outros desenvolvedores para dizer o mínimo.

Além de ter os "domínios de aplicativos" em dois locais diferentes sem muita informação (3 se você adicionar uma plataforma "web"), também precisará acessar os produtos de aplicativos / login / configurações do facebook e adicionar seu URL de redirecionamento em URIs de redirecionamento válidos do OAuth

O erro diz NADA sobre as configurações de oauth.

adrianTNT
fonte
1
Sim, eu tive que fazer essa etapa extra também. Compartilho suas opiniões sobre a documentação!
Magnus Smith
6

A partir de 2017-10.

Solução que resolveu meu problema.

Atualmente, o FB rende essa surpresa.

... do aplicativo Configurações OAuth do cliente. Verifique se o Login do cliente e do Web OAuth está ativado ...

insira a descrição da imagem aqui

As configurações a serem ajustadas estão localizadas aqui https://developers.facebook.com/apps/[your_app_itentifier}/fb-login/ .

A barra final é importante. Eles devem corresponder no código do aplicativo e nas configurações de administrador do FB. Portanto, esta é uma configuração em algum lugar do seu código (veja abaixo como obter qualquer nome de domínio para um aplicativo de desenvolvimento):

{
    callbackURL: `http://my_local_app.com:3000/callback/`, // trailing slash
}

e aqui

insira a descrição da imagem aqui

Para obter qualquer nome de domínio para um aplicativo em uma máquina Windows local, edite o hostarquivo. Nomes personalizados são boas, a fim de se livrar de todos aqueles localhost:8080, 0.0.0.0:30303, 127.0.0.0:8000, assim por diante. Como alguns serviços de terceiros, como o FB, às vezes não permitem o uso127.0.0.0 nomes.

No hostsarquivo do Windows 10 está aqui:

C:\Windows\System32\drivers\etc\hosts

Faça o backup do arquivo inicial, crie uma cópia com nome diferente (não funciona no CMD nativo do Windows. Eu uso o Git for Windows , ele possui muitos comandos Unix)

$ cp hosts hosts.bak

Adicione isto em hosts

127.0.0.1  myfbapp.com # you can access it in a browser http://myfbapp.com:3000
127.0.0.1  www.myotherapp.io # In a browser http://www.myotherapp.io:2020

Para se livrar da parte da porta, :3000configure o NGINX, por exemplo.

Verde
fonte
Obrigado por isso, não tinha ideia de que a barra era necessária!
Andy Holmes
em 11 de maio de 2018, o URL de retorno de chamada nos aplicativos e os URIs de redirecionamento oauth válidos no facebook devem ser os mesmos. e https é obrigatório.
Yuda Prawira
A barra à direita economiza meu tempo. Obrigado!
HyoJin KIM 15/01
6

Clique aqui Code Project ! Seu exemplo de projeto de código. Está trabalhando para mim

insira a descrição da imagem aqui

Ambala Chandrashekar
fonte
6

Na maioria das vezes, isso acontece sem a inserção correta do URL de redirecionamento OAuth válido na seção de produtos do painel do FB. Sugiro seguir as etapas abaixo

01. Verifique se a configuração básica do aplicativo está correta com a imagem abaixo com você

insira a descrição da imagem aqui

02. verifique se você adicionou um produto

Caso contrário, você pode adicionar facilmente o produto de login clicando em + seno, como mostro abaixo.

Se o Sim chegar à configuração do produto. insira a descrição da imagem aqui

03. A verificação se você forneceu URL de redirecionamento OAuth válido

É simples dizer o que deve ser feito após o login. Não é diferente da sua chamada de retorno URl.Você pode ver na minha foto abaixo eu adicionei vários URLs de redirecionamento. insira a descrição da imagem aqui

  1. ainda tem algum problema Assista ao meu vídeo--> https://www.youtube.com/watch?v=mdhubrzV5y8&t=3s
Rumesh Madushanka
fonte
Pergunta de 2 anos e links para sites externos não devem ser o conteúdo principal de uma resposta.
zzxyz
6

O Facebook desativou recentemente o botão de alternância para ' Usar o modo estrito para redirecionar URIs '; portanto, é necessário adicionar o URI exato ao que está sendo chamado quando você pressiona o botão de login. Para o meu caso, foi como mostrado na captura de tela. Resolveu o problema para mim :)

insira a descrição da imagem aqui

Bhaskar Choudhary
fonte
5

No meu caso, o que eu precisava fazer era habilitar apenas o login OAuth do navegador incorporado

insira a descrição da imagem aqui

sh6210
fonte
Eu também estava usando o login baseado em navegador, então o mesmo problema que eu estava enfrentando. Também há uma caixa de entrada abaixo, onde eu tive que colocar meu URI de redirecionamento exato.
absin 03/02
4

Nada realmente funcionou para mim, até que eu atualizei a versão do SDK que estava usando. Comecei com 5.0. Nem mesmo a versão 5.4.0 também funcionaria. Quando atualizei para a 5.6.2, funcionou perfeitamente, apesar de não haver nada relevante nos registros de alterações!

Ste_95
fonte
1
Eu exatamente tive esse problema! Eu estava usando o "5.4.2" e atualizei para o "5.6.2"
John Smith
2

Esta opção deve estar ativada no portal:

insira a descrição da imagem aqui

Daniel Krzyczkowski
fonte
Obrigado. Eu tive o mesmo problema e esse foi o interruptor que eu perdi.
timeon
Obrigado! Isso também trabalhou para mim (eu estava usando Google Firebase Eu também tive que definir as "Válido URIs OAuth redirect" para o OAuth de redirecionamento URI-me dado pelo Google para o meu projeto..)
mwang25
2

Caso isso ajude outras pessoas, isso começou a acontecer para mim em um site antigo quando "URIs de redirecionamento válidos do OAuth" se tornaram obrigatórios. O site ainda estava usando o SDK do PHP da V4 e o problema foi resolvido para mim atualizando para o SDK da V5.

Kenneth Spencer
fonte
1

Na seção Domínio do aplicativo, você está escrevendo o domínio do aplicativo, mas também precisa adicionar o seu domínio de login, ou seja, o nome da página html na qual solicita que o usuário efetue o login. No meu caso, eu estava testando no localhost e a rota de login era localhost / login. Se eu apenas colocar http://localhost.com na seção Domínio do aplicativo, recebo esse erro. Mas depois de adicionar http: //localhost/login.com , o erro foi corrigido. e também as configurações do aplicativo foram alteradas na versão mais recente do SDK, na qual não há opção para a rota de redirecionamento do OAuth. Você deve atribuir a rota de redirecionamento diretamente do servidor, após obter o token OAuth com êxito.

Anum Sheraz
fonte
1

Isso funcionou para mim:

Aqui está a principal coisa a entender: o Facebook sempre procurará o domínio " WWW ". Portanto, verifique www.your_domain.dev está funcionando primeiro no seu navegador.

É possível que, se você tiver vários hosts virtuais no servidor local, algum outro host virtual substitua " www.seu_domínio.dev ". Então, por favor, verifique isso. O Apache escolherá a PRIMEIRA definição de domínio (ou portas, ou algo assim - não sou especialista nisso, mas aprendi por erros). Uma solução rápida e fácil para essa substituição de host virtual é colocar " www.your_domain.dev definição de host virtual na parte superior do arquivo" httpd-vhosts.conf ".

Vá para " /apache/conf/https-vhosts.conf " e coloque isso na parte superior do arquivo:

<VirtualHost *:80>
<Directory "C:/your_app_folder_path/">
    Options FollowSymLinks Indexes
    AllowOverride All
    Order deny,allow
    allow from All
</Directory>
ServerName your_domain.dev
ServerAlias your_domain.dev
DocumentRoot "C:/your_app_folder_path/"
</VirtualHost>

###### FOR SSL #####
<VirtualHost *:443>
    DocumentRoot "C:/your_app_folder_path/"
    ServerName your_domain.dev
    ServerAlias www.your_domain.dev
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    <Directory "C:/your_app_folder_path/">
        Options All
        AllowOverride All
        Require all granted 
    </Directory>
</VirtualHost>

Próximo: Se você estiver usando o sistema Windows, edite o arquivo "hosts" em "C: \ Windows \ System32 \ drivers \ etc" adicionando duas linhas:

127.0.0.1 your_domain.dev
127.0.0.1 www.your_domain.dev

Próximo: Reinicie o servidor Apache e tudo deve funcionar agora.


Espero que isso ajude você e economize seu tempo. Eu perdi quase um dia inteiro pesquisando na web e estava puxando meu cabelo e não consegui encontrar nada de útil até encontrar isso.

Altin
fonte
1

Eu tive o mesmo problema ..... o issu está na versão PHP SDK 5.6.2 e a correção estava editando o seguinte arquivo:

facebook\src\Facebook\Helpers\FacebookRedirectLoginHelper.php

mude esta linha

$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code']);

para

$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code','enforce_https']);

Chevelle
fonte
0

Esse mesmo erro do Facebook aconteceu comigo no ambiente de produção. O motivo foi que eu tinha dois aplicativos registrados no Facebook (local, produção), mas codifiquei o ID do aplicativo local no código-fonte e esqueci de trocá-lo pelo ID do aplicativo de produção antes da implantação.

As práticas recomendadas determinam que você não deve ter o ID do aplicativo codificado no código-fonte, mas, se o fizer, não combine seus vários IDs de aplicativos do Facebook, como eu fiz por engano.

Jimmy Shaw
fonte
0

Usando meu próprio servidor local.

Simplesmente adicionando http://localhost/my-sitecomo um URL em:

https://developers.facebook.com/apps/YOUR-APP-ID/fb-login/

trabalhou para mim.

Reece Kenney
fonte
0

O problema e as respostas continuam mudando à medida que o FB aperta o procedimento de login. Hoje, comecei a receber a mensagem de horror "O domínio deste URL não está incluído nos domínios do aplicativo. Para poder carregar esse URL, adicione todos os domínios e subdomínios do seu aplicativo ao campo Domínios do aplicativo nas configurações do aplicativo".

A resposta foi: agora o FB quer o uri de redirecionamento completo. Então, para mim, onde costumava ser apenas https://www.example.com , agora você quer https://www.example.com/auth/facebook/callback . Isso deve ocorrer no campo "URIs de redirecionamento válidos do OAuth" (login do desenvolvedor / Facebook -> configuração)

Peter Robinson
fonte
0

Login no Facebook -> Configurações -> URIs válidos para redirecionamento OAuth -> insira os domínios do seu URL de redirecionamento, lembre-se de adicionar 'https' ou http. por exemplo: se o seu URL de redirecionamento for https://xxx.xxx.com/path/callback.do , você só precisará inserir https://xxx.xxx.com/ , tudo bem para mim.

刘 同 彬
fonte
0

primeiro passo: use todos os https://example.in URL do certificado ou ssl, não use http://example.in

segundo passo: configuração do aplicativo faceboook-> configuração básica-> adicione seu domínio ou subdomínio

terceira etapa: configuração de login do aplicativo faceboook-> URIs de redirecionamento OAuth válidos-> adicione seu URL de redirecionamento completo após o login

quarta etapa: configuração do aplicativo faceboook-> configuração avançada-> Gerenciador de Domínio-> adicione seu nome de domínio

siga todas as etapas e use o ID do aplicativo, versão do aplicativo, segredo do aplicativo para a instalação

ganesh avhad
fonte
0

na extensão de login social do Magento 2, é necessário copiar URIs de redirecionamento válido do OAuth do painel e adicionar o link ao campo URIs de redirecionamento válido do OAuth na página Configurações do cliente OAuth em developers.facebook.com

felmez
fonte
0

Se seu jogo não tiver servidor / site (por exemplo, se você desenvolver para o Gameroom como eu) - adicione " https://apps.facebook.com/xxxxxxxxxxxxxxxxxxx " (coloque o ID do seu aplicativo em vez de "xxxxxxxxxxxx") em "URIs de redirecionamento válidos do OAuth "

Andrey
fonte
-1

A maioria das respostas consiste em adicionar o URL ao domínio do aplicativo, mas ao trabalhar em uma empresa, você não tem esse acesso. Para isso, você pode contornar isso simplesmente criando um host virtual e fazendo uma entrada de host.


adicione isso no arquivo host (/ etc / hosts) 127.0.0.1 www.seu_domínio.com

crie um host virtual. Eu usei isso para o host virtual apache

Webmaster do ServerAdmin @ localhost ServerName www.your_domain.com

    ProxyPass / http://localhost:5006/
    RewriteMap  lc int:tolower
    LogLevel debug

ashishyadaveee11
fonte