第一种方法记录在 facebook 文档中的 Login as an App下:
作为应用程序登录允许您获取访问令牌,该令牌允许您代表应用程序而不是用户向 Facebook API 发出请求。这很有用,例如修改应用程序的参数、创建和管理测试用户,或阅读应用程序的见解。应用程序访问令牌还可用于代表已授予您应用程序发布权限的用户向 Facebook 发布内容。
如文档中所述,您应该只在服务器端编码中使用此方法,在这种情况下,您的代码对恶意攻击者的攻击更加安全(与客户端代码相比)。请记住:您的 App Secret 永远不会与任何人共享,这一点很重要。将应用程序机密视为您的应用程序帐户密码。如果其他人获得了您的应用程序机密,则您的应用程序可能会受到损害。此方法对应于 OAuth 2.0 中的Client Credential Grant 。
第二种方法适用于可能没有服务器端编码的客户端应用程序。这允许您的应用代表授权用户进行 API 调用。在 SDK 的覆盖下,此方法对应于 OAuth 2.0中的隐式授权。
到现在你应该知道,这两种方式的存在是因为facebook采用了OAuth 2.0。
为了充分了解这两种方法的用法和区别,我强烈建议您阅读RFC 6749 - The OAuth 2.0 Authorization Framework。如果您发现文本难以阅读,您可以使用一些易于阅读的应用程序,例如Google Chrome 上的 Evernote Clearly。对于 OAuth 2.0 的简化、更易于理解的版本,您可以阅读Aaron Parecki 的OAuth 2 Simplified。