我找到了这个问题,它有一个答案,但 facebook 从那时起改变了令牌格式,现在它是这样的:
AAACEdEose0cBACgUMGMCRi9qVbqO3u7mdATQzg[more funny letters]ig8b3uss9WrhGZBYjr20rnJu263BAZDZD
简而言之,你无法从中推断出任何东西。我还找到了access token debugger,如果您将令牌粘贴进去,它会显示我正在寻找的信息,这很好,但不能帮助我以编程方式进行操作。
关键是,如果有人为用户获取令牌,他可以使用它来访问图表,这就是我在我的应用程序中所做的 - 我想确保人们正在转发我的应用程序颁发给他们的令牌,而不是另一个。
我的申请流程是:
- 从 facebook 获取访问令牌(没什么特别的,按照此处描述的方式,服务器端流程。(也使用 iPhone 和 android,但如果我没记错的话,它们有类似的流程))
[设备] <-> [facebook ] - 使用该访问令牌,设备将使用令牌
[device] <-> [Jonathan's application]
在我的服务器上访问我的应用程序服务器,我将访问令牌附加到用户并使用它在我的应用程序中向该用户授予权限。(使用 facebook 连接对用户进行身份验证)
我的应用程序是安全的,并且无论facebook如何,完成的访问都经过身份验证,但是!在这个流程中,我发现的一个薄弱环节是我无法确定我获得的访问令牌是为我的应用程序签名的 - 我不喜欢它,因为我缓存令牌以供离线使用,我希望 100% 确定它们适用于我的应用程序,具有我的权限。
那么验证我获得的令牌与我的应用程序相关的(最佳)方法是什么(对于与用户的关系,我使用令牌访问 /me 并查看该令牌用于哪个用户)
我不需要解密令牌(我猜它是某种 AES),我只是在寻找一个端点,它会告诉我令牌与我的应用程序 ID 匹配。
(编辑:使用 C# SDK,如果重要的话。但是提供该信息的图形/休息调用也一样好:))