使用FacebookOAuth保护RESTAPI端点的可能方法
我读了很多关于这个话题的书,但我发现的都是过时的或部分的答案,这些答案对我帮助不大,实际上只是让我更加困惑。 我正在编写一个restapi(Node+Express+MongoDB),它由一个web应用程序(托管在与API相同的域上)和一个Android应用程序访问 我希望API只能由我的应用程序和授权用户访问。 我还希望用户能够注册和登录只使用他们的Facebook帐户,我需要能够访问一些基本信息,如姓名,个人资料图片和电子邮件 我想到的一种可能的情况是:使用FacebookOAuth保护RESTAPI端点的可能方法,facebook,api,rest,oauth,Facebook,Api,Rest,Oauth,我读了很多关于这个话题的书,但我发现的都是过时的或部分的答案,这些答案对我帮助不大,实际上只是让我更加困惑。 我正在编写一个restapi(Node+Express+MongoDB),它由一个web应用程序(托管在与API相同的域上)和一个Android应用程序访问 我希望API只能由我的应用程序和授权用户访问。 我还希望用户能够注册和登录只使用他们的Facebook帐户,我需要能够访问一些基本信息,如姓名,个人资料图片和电子邮件 我想到的一种可能的情况是: 用户使用Facebook登录web应
从这个意义上说,我认为最好使用1小时过期策略的Redis,以便Redis自动删除旧信息。我认为更好的解决方案是:
fb\u访问\u令牌
,确保其有效。获取用户id
,电子邮件
,并将其与现有用户交叉引用以
看看是新的还是旧的api\u access\u令牌
,将其返回给webapp和android应用程序。如果你需要Facebook
除登录外,请将该fb\u访问\u令牌
存储在您的
DB将其与新的api\u访问\u令牌
和您的用户id
关联api\u访问\u令牌
对其进行身份验证。如果您需要fb\u访问\u令牌
获取更多信息,您可以
通过从数据库中检索它来实现fb\u访问\u令牌
。如果api\u-access\u令牌
被破坏,那么与获得fb\u-access\u令牌
相比,您有更多的控制权来查看攻击者是谁、他们在做什么等。您还可以更好地控制过期日期的设置、扩展fb\U访问令牌等
只要确保无论何时通过HTTP传递任何类型的访问令牌,都要使用SSL 谢谢你的快速回答。第1点和第2点很清楚,但是如何从API中准确地检查fb_access_令牌是否按照第3点有效?对
/me
端点进行图形调用并检查响应。好的,我明白了,因此,基本上calling/me将向我发回为用户颁发的当前访问令牌,我所要做的就是检查这两个令牌是否匹配。非常感谢。否。如果用户对象有效,则返回用户对象;如果无效,则返回错误。您好!我认为我们不能相信facebook返回的用户对象总是一封电子邮件。我昨天对此进行了测试,但在我的案例中,电子邮件没有返回。facebook sdk说:“个人资料中列出的主要电子邮件地址。如果没有可用的有效电子邮件地址,则不会返回此字段。”。我认为唯一的替代方法是使用user_id(它总是返回)在我们的后端api中创建一个用户。你怎么认为?