La risposta breve è che il problema può essere risolto se si utilizza il proprio redirect_uri anziché quello standard di Facebook. Quando viene restituito il token di accesso, la pagina standard www.facebook.com/connect/login_success.html ha un timer che modificherà l'URL prima che l'app possa recuperare il token di accesso.
Questo problema può verificarsi in relazione alla latenza di Internet. Due clienti hanno segnalato problemi con questo in Myanmar e uno nel Regno Unito. Nessun problema per nessun altro. Supponendo che si autorizza in questo modo:
https://www.facebook.com/v2.10/dialog/oauth?client_id=999999999999999&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token&scope=user_photos,user_events&display=popup
Per la redirect_uri di default (https://www.facebook.com/connect/login_success.html), facebook restituisce l'access_token nei parametri dell'URL, ma il corpo HTML per quella pagina contiene due timer:
Success <br/>
<b id="warning" style="display: none; color:red">
SECURITY WARNING: Please treat the URL above as you would your password and do not share it with anyone.
See the <a href="http://l.facebook.com/l.php?u=xxxxxxx" target="_blank" data-lynx-mode="hover">Facebook Help Center</a> for more information.
</b>
<script type="text/javascript">
document.domain = 'facebook.com';
if (window == top) {
setTimeout(function() { document.getElementById("warning").style.display = "block"; }, 2000);
}
setTimeout(function() { if (window.history.replaceState) { window.history.replaceState({}, "", "\/connect\/blank.html#_=_"); } }, 2000);
</script>
Quando uno dei due timer scocca, cambierà l'URL che rimuove il token di accesso. Quindi, finché lo prendi prima che cambi, tutto funziona. Nel nostro caso, stavamo usando un controllo del browser incorporato sotto Windows e monitorando i collegamenti navigati. Finché il codice può ricevere un evento di navigazione che contiene il token di accesso prima che si verifichi questo timeout, allora tutto ha funzionato. Non siamo mai stati in grado di determinare in che modo la latenza della connessione Internet e forse qualche combinazione del computer lento di un utente ha causato questo problema, ma questo l'ha risolto.
Nelle impostazioni di accesso di Facebook per l'app di Facebook, aggiungere i propri URI all'elenco di URI di reindirizzamento OAuth validi. Se si reindirizza alla propria pagina html, è possibile evitare il timeout di Facebook.
Controlla la mia risposta su questo link. potrebbe essere che risolverà il tuo problema. http://stackoverflow.com/questions/16033462/security-warningplease-treat-the-url-above-as-you-would-your-password-and-do-n/16192846#16192846 – Zac24