【发布时间】:2016-04-12 22:09:07
【问题描述】:
我的后端是在 AWS 上设置的,并且正在运行一个 expess 网络服务器。它是用passportjs配置的。
在前端,我希望所有用户都通过linkedin 登录。当他们按下按钮时,它会使用 Angular 的 $http.get 服务发出一个 http GET 命令。我试图实现的基本工作流程如下:
1) 客户端打开应用,点击使用linkedin登录,get请求发送到后端快递服务器
2)express服务器使用passportjs进行linkedin oauth2认证,随后将请求转发到linkedin服务器
3) Linkedin 的服务器然后响应客户端的请求以登录页面响应客户端
4) 使用用户登录凭据成功验证第 3 步中的页面后,访问令牌将发送到快速服务器,因为我将链接的重定向 URL 配置到它。
5) Express 服务器然后接收用户配置文件详细信息,然后将一些数据发送到客户端。
由于我使用的是 ionic 框架,我想接收数据,然后加载在 ionic 模板文件夹(前端本地)中定义的页面,并在步骤 5 中使用从服务器接收到的数据填充它。
为了做到这一点,我试图发出一个 $http.get 请求,该请求失败并出现错误: 步骤 2 上的 404。
$http.get('http://www.example.com:3000/auth/linkedin/').
success(function(data, status, headers, config) {
console.log('success');
}).
error(function(data, status, headers, config) {
console.log('failure '+data+', ' +status +', '+headers+', '+config)
});
打印出来:
"failure , 404, function (name) {
"use strict";
if (!headersObj) headersObj = parseHeaders(headers);
if (name) {
return headersObj[lowercase(name)] || null;
}
return headersObj;
}, [object Object]"
我不确定这是否是解决方法。
另一种更成功的方法是使用window.location('http://www.example.com:3000/auth/linkedin/')。这能够跟踪到linkedin登录页面的重定向,并且在成功登录后,配置文件被返回到快速服务器。此方法在第 4 步之前运行良好。问题出在第 5 步,我无法将用户重定向回应用中定义的其他模板。
【问题讨论】:
标签: angularjs node.js oauth-2.0 ionic-framework passport.js