Facebook-Callback hat mit dem Anhängen von #_=_
Rautenunterstrich in der Rückgabe-URL
Weiß jemand, warum? Was ist die Lösung?
Facebook-Callback hat mit dem Anhängen von #_=_
Rautenunterstrich in der Rückgabe-URL
Weiß jemand, warum? Was ist die Lösung?
Sie können auch einen eigenen Hash auf der Registerkarte redirect_uri
Parameter für den Facebook-Callback, der unter bestimmten Umständen hilfreich sein kann, z. B. /api/account/callback#home
. Wenn Sie zurückgeleitet werden, wird es zumindest ein Hash sein, der einer bekannten Route entspricht, wenn Sie backbone.js oder ähnliches verwenden (bei jquery mobile bin ich mir nicht sicher).
Sehr ärgerlich, vor allem für Anwendungen, die die URI parsen und nicht nur die $_GET lesen... Hier ist der Hack, den ich zusammen geworfen habe... Viel Spaß!
<html xmlns:fb='http://www.facebook.com/2008/fbml'>
<head>
<script type="text/javascript">
// Get rid of the Facebook residue hash in the URI
// Must be done in JS cuz hash only exists client-side
// IE and Chrome version of the hack
if (String(window.location.hash).substring(0,1) == "#") {
window.location.hash = "";
window.location.href=window.location.href.slice(0, -1);
}
// Firefox version of the hack
if (String(location.hash).substring(0,1) == "#") {
location.hash = "";
location.href=location.href.substring(0,location.href.length-3);
}
</script>
</head>
<body>
URI should be clean
</body>
</html>
Dies kann zu einem ernsten Problem werden, wenn Sie ein JS-Framework mit Hashbang-URLs (/#!/) verwenden, z. B. Angular. In der Tat wird Angular URLs mit einem Nicht-Hashbang-Fragment als ungültig betrachten und einen Fehler ausgeben:
Error: Invalid url "http://example.com/#_=_", missing hash prefix "#!".
Wenn Sie sich in einem solchen Fall befinden (und auf Ihre Domain Root umleiten), sollten Sie stattdessen :
window.location.hash = ''; // goes to /#, which is no better
Einfach tun:
window.location.hash = '!'; // goes to /#!, which allows Angular to take care of the rest
Ich verstehe nicht, wie dieses Problem mit Facebook AJAX zusammenhängt. In der Tat tritt das Problem auch bei deaktiviertem JavaScript und rein redirect-basierten Anmeldungen auf.
Ein Beispiel für einen Austausch mit Facebook:
1. GET <https://www.facebook.com/dialog/oauth?client_id=MY_APP_ID&scope=email&redirect_uri=MY_REDIRECT_URL> RESPONSE 302 Found Location: <https://www.facebook.com/connect/uiserver.php?[...]>
2. GET <https://www.facebook.com/connect/uiserver.php?[...]> RESPONSE 302 Found MY_REDIRECT_URL?code=FB_CODE#_
3. GET MY_REDIRECT_URL?code=FB_CODE#_
Passiert bei mir auch nur mit Firefox.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Ich stehe auch vor dem gleichen Problem: stackoverflow.com/q/7190184/912011 Ich denke jedoch, dass es mit der Firefox-Version zusammenhängen könnte.
0 Stimmen
Hat jemand eine Lösung für dieses Problem gefunden? Die Standard-Facebook-Connect-Sdk funktioniert nicht.
0 Stimmen
Das Beste, was wir tun können, bis Facebook diesen Fehler korrigiert (oder ihre Dokumentation) ist in meiner Antwort unten. Erstens, richten Sie Ihre Login-URLs in Übereinstimmung mit der Dokumentation ein. Und zweitens, fügen Sie eine schnelle Header-Javascript-Hack, um dies in Ihrem Code zu vermeiden. Dies wird gut abnehmen, wenn Facebook jemals dieses Problem behebt.
0 Stimmen
Irritierender FB-API-Fehler. Er bremst meine AJAX-Navigation :(
38 Stimmen
Irgendeine Idee wie Facebook fügt diese Zeichen an? Facebook leitet zu meinem Handler weiter, wo ich dann die Umleitung zur Rückgabe-URL verwalte, aber die Zeichen werden immer noch an die URL angehängt.
0 Stimmen
developers.facebook.com/bugs/318390728250352 Dieser Link könnte Sie zum Lachen bringen
6 Stimmen
@BenFoster Ich denke, wenn Sie Fiddler oder ähnliches verwenden, werden Sie feststellen, dass, wenn FB auf Ihren Handler zurückgreift, die
#_=_
vorhanden ist, dann kann man zwar eineResponse.Redirect
zu dem, was Sie eigentlich tun wollen, der Browser behält den Hash bei Deshalb ist es auch nur die Client-seitig unten vorgeschlagene Abhilfemaßnahmen, die funktionieren werden.0 Stimmen
Ich habe noch keine Antwort auf folgende Fragen gefunden por qué wird dies angehängt. Die in diesem Thread enthaltenen Facebook-Posts sind nicht hilfreich.
0 Stimmen
Weiß jemand, warum ich das bekomme und sonst NICHTS?
2 Stimmen
2016 März, passiert immer noch :P
2 Stimmen
April 2016 noch stattfinden. -_-
1 Stimmen
Mai 2016 noch passiert :-)
2 Stimmen
Zu Ihrer Information, es wird nicht behoben werden
25 Stimmen
2017, was zum Teufel
7 Stimmen
Mai 2017, noch....
2 Stimmen
Juni 2017 :) immer noch passiert. #_=_
1 Stimmen
Juli 2017... Blabla... Blabla
1 Stimmen
August 2017 Gleiche Scheiße
1 Stimmen
November 2017, nichts hat sich geändert
1 Stimmen
Dezember 2017, STILL HAPPENING
2 Stimmen
Willkommen im Jahr 2018! Ja, es geht weiter.
1 Stimmen
Februar 2018, der Fehler tritt immer noch auf...
6 Stimmen
März 2018 ja, es geht weiter
2 Stimmen
31. Mai 2018 , #_=_ FTW!
0 Stimmen
27. Juli 2018. Sie findet immer noch statt!
2 Stimmen
1. August 2018 noch stattfinden! :(
0 Stimmen
29. September 2018... Grrr
0 Stimmen
Oktober 2018 findet immer noch statt :(
1 Stimmen
Jan 2019 findet noch statt
1 Stimmen
April 2019 findet noch statt :)
1 Stimmen
August 2019, keine Neuigkeiten zu diesem Thema x)
1 Stimmen
April 2020 und ich sehe es immer noch
0 Stimmen
Weihnachten 2020 findet immer noch statt :(
0 Stimmen
Februar 2021 ist für mich immer noch ein Problem
0 Stimmen
April 2021, v10.0 findet noch statt
0 Stimmen
Für mich sieht das tatsächlich wie ein Browser-Bug aus, denn das #_=_ kommt von der ersten Weiterleitung, aber die zweite Weiterleitung hat keinen Hash, so dass es wie eine Schwachstelle aussieht, dass der Hash, der in einem Satz von Weiterleitungen gegeben wird, auch bei weiteren Weiterleitungen beibehalten wird (solange die letzte keinen Hash hat).
0 Stimmen
Februar 2022, es geht weiter! <(^.^<)
0 Stimmen
Ich habe dich im September 2022 gefunden, denn warum passiert das nicht?