在Facebook api的春季社交活动中,为什么facebook.isAuthorized总是返回true?

时间:2017-04-08 16:20:34

标签: spring spring-social

我有一个具有Facebook登录功能的angular2应用程序。当用户验证自己时,我会将此accessToken发送到服务器。

enter image description here

服务器程序使用Springboot,我使用spring social。

我想查看此用户是否已获得授权。所以我打电话给: enter image description here

facebook.getToken()返回客户端生成的访问令牌。当我调用facebook.isAuthorized()时,它返回true ...正如预期的那样,因为我正在发送真实数据。

虽然我发送的伪造数据如下:

enter image description here

(本例中的令牌由我制造)到同一个API端点 facebook.isAuthorized返回true。这是意料之外的,因为在这种情况下我正在制作一个accessToken。

春天 - 社会依赖是这样的:

enter image description here

为什么isAuthorize对于真实的访问令牌以及假的令牌都返回true?如何检查我的angular2应用程序的用户是否已通过服务器端的Facebook验证自己?

1 个答案:

答案 0 :(得分:0)

可以在https://github.com/spring-projects/spring-social/blob/a6bf2626ee8ac81765c416029ca033affc94fc6c/spring-social-core/src/main/java/org/springframework/social/oauth2/AbstractOAuth2ApiBinding.java#L87找到isAuthorized() for FacebookTemplate的实现。

使用此源非常明显isAuthorized()仅检查是否提供了任何访问令牌。

要验证您的令牌,您可以运行任何需要授权的请求(例如userOperations().getUserPermissions())并检查InvalidAuthorizationException,或者您可以在how to verify facebook access token?中找到一些灵感。