是什么阻止随机开发人员使用我的客户端 ID 获取用户访问令牌?

What prevents a random developer from using my client id to get user access tokens?

使用 FB 的 javascript SDK 时,只需要您的客户端应用程序 ID。是什么阻止某人找到您的客户端应用程序 ID 并使用它来登录用户并获取访问令牌以访问它认为它提供给您的应用程序的信息?

我知道这里可以采取更多的安全措施: https://developers.facebook.com/docs/facebook-login/security#proof

但默认行为看起来任何人都可以冒充您的应用并获取用户信息。

JS SDK 仅适用于您的域,您需要在应用程序设置中添加它。所以没有安全问题,试试看

另外,只有用户本人才能使用自己的账号登录,不能因为有App ID就随便登录任何用户。

OAuth2 客户端(应用程序)有一组已注册的指向其安装的重定向 URI。如果攻击者使用其他客户端的 ID 启动身份验证,他必须指定一个有效的重定向 URI,浏览器将在身份验证过程后被重定向到。因此生成的令牌不会传递给攻击者,而是传递给客户端的应用程序。

这种攻击称为“客户端模拟”,OAuth2 RFC discusses it. It's also discussed in OAuth 2.0 for Native Apps