使用MEAN.js Restful无会话API后端进行社交登录



我正在使用MEAN.js开发一个Restful API,它将被AngularJS网站和Phonegap移动应用程序使用。

我希望用户能够使用Faceboo、谷歌和推特创建帐户和/或登录。

我尝试使用与MEAN.js种子应用程序相同的示例代码,但它的Node端位于仅为API提供服务的3000端口上,网站运行在另一台服务器上(目前位于9000端口上)。

我已经使用生成令牌的Passport自定义本地策略和验证API调用的Bearer策略实现了令牌身份验证。

但我在社交登录方面遇到了问题,将社交帐户链接到现有用户。

从Angular客户端,我调用一个api端点,将用户重定向到oauth提供商(例如Twitter)。当用户回来时,我的服务不知道登录的用户,因为我不再使用会话了。

我曾尝试将提供者令牌返回给客户端,但在解析anguler url时遇到问题。然后,我在angular之外编码了另一个页面,该页面接收提供者令牌,并调用一个发送oauth令牌和我的api发布的令牌的api端点。它对谷歌有效,但对推特无效。看来twitter需要一个会话。

不管怎样,实现我想要的最好的方法是什么?我怎样才能做到这一点?

由于您使用了Angularjs,请看一下这个Angularjs库https://github.com/sahat/satellizer.该库几乎打开了一个oauth弹出窗口,并在弹出窗口的url中检查令牌。您可以很容易地复制这种方法,也可以只使用这个库。它与Twitter等少数社交媒体提供商合作,而且添加更多内容很容易。

我也需要同样的东西,所以我开始创建自己的。它仍在开发中,但应该会给你一个良好的开端。请随意创建一个拉取请求并帮助它变得更好。也许我们最终可以将其合并到他们的代码库中。

https://github.com/elliottross23/MeanJsSocialLoginTokenAuth

最新更新