Krótka odpowiedź brzmi, że problem można rozwiązać, jeśli używasz własnego redirect_uri zamiast standardowego facebooka. Kiedy zwracany jest token dostępu, standardowa strona www.facebook.com/connect/login_success.html ma licznik czasu, który zmieni adres URL, prawdopodobnie zanim aplikacja będzie mogła odzyskać token dostępu.
Ten problem może występować w związku z opóźnieniami w Internecie. Mieliśmy dwóch klientów zgłaszających problemy z tym w Birmie i jednym w Wielkiej Brytanii. Żadnych problemów dla nikogo innego. Zakładając, że są zezwalająca tak:
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
dla domyślnego redirect_uri (https://www.facebook.com/connect/login_success.html), facebook zwraca access_token w parametrach URL, ale ciało html na tej stronie znajdują się dwa liczniki:
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>
Po uruchomieniu timera zmieni się adres URL, który usuwa hasło access_token. Tak długo, jak to łapiesz, zanim to się zmieni, wszystko działa. W naszym przypadku używaliśmy wbudowanej kontroli przeglądarki w systemie Windows i monitorowaliśmy nawigowane linki. Dopóki kod może otrzymać zdarzenie nawigacyjne zawierające tag access_token przed upływem tego limitu czasu, wszystko działało. Nigdy nie byliśmy w stanie określić, w jaki sposób opóźnienie połączenia internetowego i być może jakaś kombinacja powolnego komputera użytkownika spowodowała ten problem, ale to rozwiązało.
W ustawieniach Facebook Login dla aplikacji Facebook dodaj własne identyfikatory URI do listy prawidłowych identyfikatorów URI przekierowania OAuth. Jeśli przekierujesz się na własną stronę html, możesz uniknąć przekroczenia limitu czasu na Facebooku.
Sprawdź moją odpowiedź na ten link. może to rozwiąże problem. http://stackoverflow.com/questions/16033462/security-warningplease-treat-the-url-above-as-you-would-your-password-and-do-n/16192846#16192846 – Zac24