与angular和节点的Oauth
我有麻烦得到oauthangular度工作。 当我直接进入链接到浏览器
http://localhost:8080/auth/twiter
我能够使用oauth进行连接,并得到回应但是,当我试图用下面的代码angular度做到这一点
login_twitter : function login_twitter(){ var deferred = $q.defer(); $http.get('auth/twitter') .success(function (data,status){ if(status === 200 && data.state=='success'){ user = data.user.name; defered.resolve(); } else{ deferred.reject(); } }) .error(function (data){ deferred.reject(); }); return deferred.promise;
我从浏览器中得到一个错误
XMLHttpRequest cannot load ....link... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
在我的服务器,我试过(res.header和res.setHeader)
app.use(function (req, res, next) { res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); res.setHeader('Access-Control-Allow-Credentials', true); next(); });
任何人都可以帮我吗? 我被困了一段时间。 或者是否有任何可以使用Oauth以angular度和节点login的示例,因为大多数教程都是使用node和ejs / jade
Twitterauthentication策略要求用户login到Twitter,并允许您的“应用”权限访问您的Twitter帐户信息。 这不能用XHR来完成,因为如果用户尚未login,用户如何input他们的Twitter凭证loginTwitter呢? 如果请求是通过XHR发送的,用户将如何批准您的Twitter“应用程序”请求的权限?
这适用于所有使用OAuth或OpenID的Passport策略。 用户的浏览器必须直接进入auth提供商的网站,以便他们可以:A)login到auth提供商或B)批准您在您的应用程序中请求的权限。 一旦用户完成了validation提供程序(在您的情况下,Twitter),然后将用户的浏览器redirect到您的应用程序的端点与某种forms的令牌,然后您的应用程序将用于从validation提供程序请求信息(如电子邮件地址,全名等)