2013-02-07 14 views
5

Ho un'applicazione di Facebook che viene eseguita in un chiosco nel mio ristorante, consente agli utenti di effettuare il check-in. Funziona alla grande, se accedono e accettano i permessi necessari, quindi li lascia uscire quando vengono eseguiti senza il minimo problema.facebook oauth non può disconnettere l'utente che non accetta le autorizzazioni

Se tuttavia non accettano le autorizzazioni, non funzionerà alcun metodo di registrazione. Ho provato tutto quello che riesco a pensare e ogni post che ho trovato su StackOverflow.

Come posso registrare il cliente se auth non dispone dell'autorizzazione dell'utente?

Ho segnalato questo a Facebook utilizzando il bug report, hanno dichiarato che stanno esaminando. Spero solo che uno dei geni qui presenti abbia avuto un'idea.

+0

non sono sicuro se capisco perfettamente che cosa si sta parlando riguardo ... Vuoi dire che l'utente premuto annulla quando viene richiesto di autorizzare l'applicazione o in una finestra di dialogo di autorizzazione estesa? – Lix

+1

Hanno premuto Annulla quando richiesto per autorizzare. – jeremiah

+0

Sto avendo lo stesso problema con te. Hai trovato qualche soluzione? – Jako

risposta

1

È necessario utilizzare la connessione delle autorizzazioni nel grafico api per determinare se l'utente ha fornito determinati importi necessari. in caso contrario, è possibile utilizzare la stessa condizione per eseguire il rendering di un pulsante di accesso o il flusso senza l'ambito aggiunto.

esempio in arrivo: include, corrente php sdk e corrente js sdk con pulsante di accesso html5.

* nell'esempio sto usando manage_pages come il permesso necessario. *

PHP SDK 3.2.2 init. Codice

require '../../src/facebook.php'; 
$facebook = new Facebook(array(
    'appId' => '1111111111111111', 
    'secret' => 'xxxxxxxxxxxxxxxx', 
    'cookie' => true, // enable optional cookie support 
    )); 
try { $user = $facebook->getUser(); } catch (FacebookApiException $e) { }; 

PHP:

if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_accounts = $facebook->api('/me/?fields=permissions'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 

condizioni PHP e il pulsante di login HTML5

 <div id="fb-root"></div> 
     <script>// current js sdk</script> 
<?php if($user && !$user_accounts[permissions][data][0][manage_pages]): ?> 
// we know we have a user but no perms so lets render button with out scope. 
    <div class="fb-login-button" data-autologoutlink="true" data-show-faces="false" data-width="200" data-max-rows="1" data-size="large"></div> 
<?php elseif($user && $user_accounts[permissions][data][0][manage_pages]): ?> 
// we know we have a user and they have given perms so render button with scope. 
    <div class="fb-login-button" data-autologoutlink="true" data-show-faces="false" data-width="200" data-max-rows="1" data-size="large" data-scope="manage_pages"></div> 
<?php elseif(!$user): ?> 
// we have no user, flow as new user... or provide 2 buttons lol. 
    <div class="fb-login-button" data-autologoutlink="true" data-show-faces="false" data-width="200" data-max-rows="1" data-size="large" data-scope="manage_pages"></div> 
<?php endif; ?> 
+0

Sfortunatamente non funzionerà nel mio caso. Il mio problema è che non posso costringerli a uscire da Facebook. Al loro accesso vengono presentate le richieste di autorizzazione. Se fanno clic su Annulla, non c'è modo di disconnetterli da Facebook senza inviarli a Facebook. Il chiosco deve essere bloccato il più pesantemente possibile per impedire ai clienti di visitare altri siti Web (ad esempio per impedire ai bambini stupidi di sollevare siti porno); Ho bloccato ogni altro pezzo del sito. L'unica altra opzione è scrivere un plugin per firefox per rimuovere l'elemento cancel usando il dom. – jeremiah

+0

Volevo solo aggiornarlo nel caso qualcuno lo avesse mai visto di nuovo. Il plugin firefox era la strada che dovevo percorrere. Facebook si rifiuta di risolvere questo problema. – jeremiah