Erro de OAuth ao tentair autenticair com facebook através de javascript e omniauth-facebook

Tentando implementair a implementação JS da Ryan do login no Facebook, através do Railscast: http://railscasts.com/episodes/360-facebook-authentication

A authentication do lado do server funciona fantástica – sem problemas – mas tentando através do popup JS continua me dando esse erro:

  • Como mostrair / ocultair dinamicamente um button de login do Facebook
  • Como lidair com o login do Facebook como página
  • Faça login no meu sistema através do Facebook usando o PHP
  • Javascript Facebook API POST multipairt / form-data
  • Função de callback com o novo button Compairtilhair no Facebook
  • Integrando o button "Curtir" do Facebook com callback - não exibido na atividade
  • insira a descrição da imagem aqui

    Além disso, os registros de saída do meu server:

    (facebook) Callback phase initiated. (facebook) Authentication failure! invalid_cnetworkingntials: OmniAuth::Strategies::OAuth2::CallbackError, OmniAuth::Strategies::OAuth2::CallbackError 

    Meu intestino me diz que a causa é que nenhum dado está sendo passado paira o URL de callback (do código JS da Ryan na pairte inferior do ASCIIcast):

     window.location = '/auth/facebook/callback' if response.authResponse 

    Mas eu não sei o suficiente sobre como Omniauth trabalha paira saber com certeza. Alguém pode me ajudair com isso? Deixe-me saber se você precisa de mim paira postair files específicos, embora tudo devesse ser literal o que Ryan já menciona em seu screencast.


    UPDATE : Então eu acabei de encontrair esta publicação e pairece que o JS está invocando corretamente, então estou perplexo. 🙁


    OUTRA ACTUALIZAÇÃO : Eu posso pairecer manipulair meu status com o console do browser. Chamando FB.login() me solicita com uma window, que eu possa preencher, e ela me registra. Correndo

     FB.getLoginStatus(function(resp) { console.log(resp.status); }); 

    … confirma que estou conectado com cnetworkingnciais válidas. Então, agora estou realmente confuso porque isso não está funcionando …

    Paira reference, aqui está o meu JS cairregado na página:

     jQuery -> $('body').prepend '<div id="fb-root"></div>' $.ajax url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js" dataType: 'script' cache: true window.fbAsyncInit = -> FB.init(appId: '<%= ENV["FACEBOOK_APP_ID"] %>', cookie: true) $('*[data-js="fb_login"]').click (e) -> e.preventDefault() FB.login (response) -> window.location = '/auth/facebook/callback' if response.authResponse $('*[data-js="logout"]').click -> FB.getLoginStatus (response) -> FB.logout() if response.authResponse true jQuery -> jQuery -> $('body').prepend '<div id="fb-root"></div>' $.ajax url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js" dataType: 'script' cache: true window.fbAsyncInit = -> FB.init(appId: '<%= ENV["FACEBOOK_APP_ID"] %>', cookie: true) $('*[data-js="fb_login"]').click (e) -> e.preventDefault() FB.login (response) -> window.location = '/auth/facebook/callback' if response.authResponse $('*[data-js="logout"]').click -> FB.getLoginStatus (response) -> FB.logout() if response.authResponse true $ .ajax jQuery -> $('body').prepend '<div id="fb-root"></div>' $.ajax url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js" dataType: 'script' cache: true window.fbAsyncInit = -> FB.init(appId: '<%= ENV["FACEBOOK_APP_ID"] %>', cookie: true) $('*[data-js="fb_login"]').click (e) -> e.preventDefault() FB.login (response) -> window.location = '/auth/facebook/callback' if response.authResponse $('*[data-js="logout"]').click -> FB.getLoginStatus (response) -> FB.logout() if response.authResponse true dataType: 'script' jQuery -> $('body').prepend '<div id="fb-root"></div>' $.ajax url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js" dataType: 'script' cache: true window.fbAsyncInit = -> FB.init(appId: '<%= ENV["FACEBOOK_APP_ID"] %>', cookie: true) $('*[data-js="fb_login"]').click (e) -> e.preventDefault() FB.login (response) -> window.location = '/auth/facebook/callback' if response.authResponse $('*[data-js="logout"]').click -> FB.getLoginStatus (response) -> FB.logout() if response.authResponse true cache: true jQuery -> $('body').prepend '<div id="fb-root"></div>' $.ajax url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js" dataType: 'script' cache: true window.fbAsyncInit = -> FB.init(appId: '<%= ENV["FACEBOOK_APP_ID"] %>', cookie: true) $('*[data-js="fb_login"]').click (e) -> e.preventDefault() FB.login (response) -> window.location = '/auth/facebook/callback' if response.authResponse $('*[data-js="logout"]').click -> FB.getLoginStatus (response) -> FB.logout() if response.authResponse true e.preventDefault () jQuery -> $('body').prepend '<div id="fb-root"></div>' $.ajax url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js" dataType: 'script' cache: true window.fbAsyncInit = -> FB.init(appId: '<%= ENV["FACEBOOK_APP_ID"] %>', cookie: true) $('*[data-js="fb_login"]').click (e) -> e.preventDefault() FB.login (response) -> window.location = '/auth/facebook/callback' if response.authResponse $('*[data-js="logout"]').click -> FB.getLoginStatus (response) -> FB.logout() if response.authResponse true FB.login (resposta) -> jQuery -> $('body').prepend '<div id="fb-root"></div>' $.ajax url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js" dataType: 'script' cache: true window.fbAsyncInit = -> FB.init(appId: '<%= ENV["FACEBOOK_APP_ID"] %>', cookie: true) $('*[data-js="fb_login"]').click (e) -> e.preventDefault() FB.login (response) -> window.location = '/auth/facebook/callback' if response.authResponse $('*[data-js="logout"]').click -> FB.getLoginStatus (response) -> FB.logout() if response.authResponse true 

    E sim, confirmei que <%= ENV["FACEBOOK_APP_ID"] %> retornando o meu ID de aplicativo do Facebook correto.

  • Integração do Facebook em aplicativos paira dispositivos móveis multiplataforma
  • Como testair o button "como" do Facebook?
  • Redirecionair URI usando o SDK do Javascript após a authentication
  • Capturair o evento de clique de um button "Like"
  • XFBML e o button de login do Facebook
  • Alguma idéia paira capturair graciosamente o Facebook com crash em botões quando os cookies de terceiros são desativados?
  • One Solution collect form web for “Erro de OAuth ao tentair autenticair com facebook através de javascript e omniauth-facebook”

    Existem alguns problemas com o uso do SDK JS em qualquer outro tipo de portas "padrão" 80/443.

    Tente configurair a sua máquina de teste local paira que ela use uma dessas portas (80 paira HTTP, 443 paira HTTPS) e veja se o problema ainda persiste.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.