517 Stimmen

Facebook Callback fügt '#_=_' an die Rückgabe-URL an

Facebook-Callback hat mit dem Anhängen von #_=_ Rautenunterstrich in der Rückgabe-URL

Weiß jemand, warum? Was ist die Lösung?

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.

1voto

Rotimi Punkte 4700

Dies würde die angehängten Zeichen aus der URL entfernen

<script type="text/javascript">
 var idx=window.location.toString().indexOf("#_=_"); 
   if (idx > 0) { 
     window.location = window.location.toString().substring(0, idx); 
   } 
</script>

1voto

Nanoturka Punkte 421

Für PHP SDK-Benutzer

Ich habe das Problem einfach behoben, indem ich den zusätzlichen Teil vor der Weiterleitung entfernt habe.

 $loginURL = $helper->getLoginUrl($redirectURL, $fbPermissions);
 $loginURL = str_replace("#_=_", "", $loginURL);
 header("Location: " . $loginURL);

1voto

Simon Punkte 21689

Ich verwende dieses, um auch das Symbol '#' zu löschen.

<script type="text/javascript">
    if (window.location.hash && window.location.hash == '#_=_') {
        window.location.href = window.location.href.split('#_=_')[0];
    }
</script>

1voto

Krishna Punkte 673

Ich weiß, dass diese Antwort spät kommt, aber wenn Sie passportjs verwenden, sollten Sie sich das hier ansehen.

return (req, res, next) => {
    console.log(req.originalUrl);
    next();
};

Ich habe diese Middleware geschrieben und sie auf die Express-Server-Instanz angewendet, und die ursprüngliche URL, die ich habe, ist ohne die "#_=_" . Es sieht so aus, dass wenn wir die Instanz von passporJS als Middleware auf die Serverinstanz anwenden, diese Zeichen nicht übernommen werden, sondern nur in der Adressleiste unseres Browsers sichtbar sind.

0voto

rcomblen Punkte 4490

Mit Angular 2 (RC5) und Hash-basierten Routen kann ich dies tun:

const appRoutes: Routes = [
  ...
  {path: '_', redirectTo: '/facebookLoginSuccess'},
  ...
]

und

export const routing = RouterModule.forRoot(appRoutes, { useHash: true });

Soweit ich das verstanden habe, ist die = Zeichen in der Route wird als Teil der Definition der optionalen Routenparameter interpretiert (siehe https://angular.io/docs/ts/latest/guide/router.html#!#optional-route-parameters ), also nicht in den Routenabgleich einbezogen.

CodeJaeger.com

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.

Powered by:

X