我的项目使用Node.js和Express,但问题是关于通用方法.
我们的用户都来自FB,我们除了FB之外没有任何身份验证.我们需要将某些操作与特定的FB用户关联起来,并且还需要他们的令牌与FB通信.
目前我们这样做:
什么是好的:我们总是知道用户的状态是有效的(令牌的TTL超过了正常页面的生命周期,所以我们在这里很好).
我们不太喜欢:*客户端令牌是短暂的(是的,我们可以交换它们,但如果我们可以找到任何替代方案,我们不想)*它通常需要多次FB请求(1 - 加载JS SDK,2 - 获取登录状态),直到我们可以展示一些东西.直到我们网站的"登录"区块为空.
问题是什么?
我们正在寻找一种在这里使用某些服务器端代码的最佳方式,并且当我们确定用户已登录时,至少会呈现用户的名称和头像.
我可以想象一些像这样的方案:
关注点:
我已经解决了这个问题,但我的问题不同了.我不确定javascript登录如何确定,以及其他人如何不登录其他帐户.
根据入门 FB.authResponse是在登录成功时调用,但当然在客户端.
然后我们可以得到userId和accessToken退出响应,我们也可以打电话/me获取更多信息.为了将该用户置于会话中,所有关于成功javascript登录的信息必须被发送到服务器,这是我感到困惑的地方.毕竟它是HTTP,每个其他请求都是不同的,可以复制.
可能只是因为我很困惑,关于某人如何不能破解并模仿任何其他用户的脸书ID来登录他的帐户.
例如,在身份验证成功之后,我对我的服务器进行ajax调用,提供fb-user-id然后我将其与数据库匹配并将相应的用户放入会话中,但不是因为这是fb-user-id在后端没有再次验证(或者它是否经过验证?,我没有找到任何关于它的信息)这个特定用户是实际注册我的应用程序的用户,然后是与其他人的fb相同的登录请求-user-id可以登录到他的帐户.
我敢肯定,我不是第一个有这种困惑的人.请帮助清除这种混乱,因为我现在已多次阅读文档,但仍无法弄清楚为什么其他人无法登录其他人的帐户.
编辑
我发现了这个,similar question但这里的人没有回答他如何验证后端登录或可能是我无法理解.
我使用 Facebook 作为我的 Web 应用程序 (ASP.NET MVC) 的登录提供程序。
我的登录方式类似于 StackOverflow 的另一篇文章How to secure authorize a user via Facebook's Javascript SDK。我也分享用户的担忧。


var authResponse = response.authResponse;
Run Code Online (Sandbox Code Playgroud)
返回的对象:
{
accessToken: "...",
expiresIn: 1234,
signedRequest: "...",
userID: "123456789"
}
Run Code Online (Sandbox Code Playgroud)
我听说我可以使用signed_request来验证用户的请求,但网上的所有示例都是针对 PHP 的。我如何在 .NET 中执行此操作?
c# asp.net-mvc facebook-javascript-sdk facebook-login asp.net-mvc-5