Wie man eine Weiterleitung im http.Holen Sie sich in AngularJS?
Arbeite ich an einer website für Trainer zu helfen, Menschen gesünder Leben durch den Einsatz von sozialen Medien. Auf den moment, in dem ich arbeite, den Zugang zu Twitter über OAuth in einem ExpressJS server mit AngularJS im frontend.
Aus der website von AngularJS:
Antwort-Statuscode zwischen 200 und 299 ist als ein Erfolg, status und Ergebnis in der Erfolgs-callback aufgerufen wird. Beachten Sie, dass, wenn die Antwort eine Umleitung, XMLHttpRequest transparent zu Folgen, was bedeutet, dass der Fehler callback wird nicht aufgerufen werden, für solche Antworten.
Den vollständigen code von meinem server gefunden werden kann, in web.js und twitter.js auf github, aber dies ist der Anrufer:
function LoginCtrl($scope, $http, $location) {
$scope.welcome = 'Sign in with Twitter';
$http.defaults.useXDomain = true;
$scope.submit = function() {
$http({method: 'GET', url: '/sessions/connect'}).
success(function(data, status) {
$scope.welcome = data;
});
};
}
- Und dies ist der angerufene in web.js:
app.get('/sessions/connect', function(req, res){
consumer().getOAuthRequestToken(function(error, oauthToken, oauthTokenSecret, results){
if (error) {
res.send("Error getting OAuth request token : " + sys.inspect(error), 500);
} else {
req.session.oauthRequestToken = oauthToken;
req.session.oauthRequestTokenSecret = oauthTokenSecret;
res.redirect("https://api.twitter.com/oauth/authorize?oauth_token="+req.session.oauthRequestToken);
}
});
});
Wenn ich die Option mit tcpdump
(sorry, ich bin altmodisch) ich sehe:
Connection:.keep-alive....Moved.Temporarily..Redirecting.to.https://api.twitter.com/oauth/authorize?oauth_token=***
Das ist wirklich schön natürlich, und in der Tat passiert, wenn ich auf diesem server /sessions/connect
manuell in den browser. Allerdings mit AngularJS, mein browser-Bildschirm ist eigentlich nicht umgeleitet. Warum nicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
$http
geht und bekommt den Inhalt der Seite für Sie. Jedoch, es gibt Sie die Ergebnisse zurück in die Verheißung. Es ändert nichts an Ihrer Seite, wenn Sie Fragen. In Ihremthen
handler, Sie können etwas tun, um die Weiterleitung zu Ihrer Seite. Es ist ein Beispiel, wie können Sie das hier tun: Behandeln Sie ein express-Weiterleitung von Kantigen POSTres.send("redirection suggestion to https://")
ich werde umzuleiten mich auf der twitter Seite. Von dort aus etwas auf meinem server aufgerufen wird (die route/sessions/callback
), und ich nicht in der Lage zu erhalten die response-Objekt, das callback in der AngularJS-controller ist es nicht? Ist mitoauth
auf dem server zusammen mit AngularJS vielleicht nicht möglich?