저는 소셜 미디어를 사용하여 사람들의 건강한 삶을 돕기 위해 코치 웹 사이트를 만들고 있습니다. 지금은 프론트 엔드에 AngularJS가있는 ExpressJS 서버에서 OAuth를 통해 Twitter에 액세스하는 중입니다. website of AngularJS에서AngularJS에서 http.get의 리디렉션을 따르는 방법은 무엇입니까?
:
성공 상태로 간주되며 성공 콜백이 호출되고 발생합니다 200과 299 사이의 응답 상태 코드입니다. 응답이 리다이렉트 인 경우, XMLHttpRequest는 그것을 투명하게 따르므로, 응답 콜백은 그러한 응답을 위해 호출되지 않는다는 것을 의미한다.
내 서버의 전체 코드는 web.js와 GitHub의에 twitter.js에서 찾을 수 있습니다, 그러나 이것은 발신자입니다 :
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;
});
};
}
그리고 이것은 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);
}
});
});
tcpdump
(미안하지만 구식) 확인 :
Connection:.keep-alive....Moved.Temporarily..Redirecting.to.https://api.twitter.com/oauth/authorize?oauth_token=***
이것은 실제로 물론 좋으며 실제로 브라우저에서이 서버 /sessions/connect
을 방문하면 실제로 발생합니다. 그러나 AngularJS에서는 브라우저 화면이 실제로 리디렉션되지 않습니다. 왜 안돼?
그러나'res.send ("https : //"로 리디렉션 제안) '을 사용하면 트위터 페이지로 리디렉션됩니다. 거기에서 내 서버의 무언가 ('/ sessions/callback' 경로)가 호출 될 것이고, AngularJS 컨트롤러에서 그 콜백에 대한 응답 객체를 얻을 수 없을 것입니다. AngularJS와 함께 서버에서 'oauth'를 사용하고 있습니까? –
@ondervloei Twitter는 웹 사이트에서 OAuth 프로세스를 철자합니다. https://dev.twitter.com/docs/auth/implementing-sign-twitter 브라우저를 Twitter로 리디렉션하면 Twitter가 서버로 다시 리디렉션됩니다. 토큰과. 그런 다음 토큰을 서버에서 Angular로 다시 전달할 수 있습니다. 페이지를 계속 유지하려면 새 창을 열 수 있습니다. –
C++에서 oauth를 구현했습니다. 죄송합니다. 여기에 필요한 서버 측 코드와 클라이언트 측 코드 간의 상호 작용에는별로 경험이 없습니다. 나는 AngularJS를 사용하여 클라이언트 측에서 라우트를 설정함으로써 일반 체계를 알아 냈다고 생각합니다. 이 수수께끼에 상당 부분이 있으며이 웹 사이트를 방문하면 내가 그들을 방문하지 않는다고 추측합니다. :-) –