5

Sto tentando di visualizzare una finestra di dialogo FB.ui sul pulsante clic per un utente. In questo momento, posso visualizzare la finestra di dialogo come un pop-up, ma non voglio questo. Voglio che la finestra di dialogo appaia come una modale, in modo che i blocchi popup non la blocchino. Ho provato con il "Display: 'iframe'" parametro, ma quando si utilizza questo ottengo l'errore:Come utilizzare il token di accesso PHP di Facebook con FB Javascript SDK per la finestra di dialogo FB.UI

"dialog" mode can only be used when the user is connected.

Ho letto che forse ho bisogno di utilizzare un token di accesso per ottenere questo appaia come un modale e usa il parametro iframe del display. Tieni presente che questo è per un sito web.

Ho già un pacchetto OAuth2 in Laravel sul lato server (PHP) che si occupa di autenticare l'utente di Facebook e ottiene un token di accesso. La mia domanda è, come faccio a tirare questo token e applicarlo all'SDK di Javascript in modo che possa apparire la finestra di dialogo FB.ui come una modale? Ho anche bisogno di farlo? Ecco il javascript che sto usando:

window.fbAsyncInit = function() { 
    FB.init({ appId: '************', cookie: true, status: true, xfbml: true, oauth: true }); 
    if (typeof facebookInit == 'function') { 
     facebookInit(); 
    } 
}; 
(function(d){ 
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    d.getElementsByTagName('head')[0].appendChild(js); 
}(document)); 

function facebookInit() { 
    FB.ui({ 
     url : 'http://url.com', 
     method: 'feed', 
     name: 'Url', 
     link: url, 
     display: 'iframe', 
     picture: 'http://thisimage.png', 
     caption: fb_description, 
    }, function (response) { 
     if (response && response.post_id) { 
      window.location = "/artists"; 
     } else { 
      window.location = "/artists"; 
     }     
    }); 
} 

risposta

1

Ho anche avuto questo problema - si è scoperto non ho avuto il dominio localhost specificato nelle impostazioni della app di Facebook. Dopo averlo aggiunto, ha funzionato bene.