当我想要的只是公共Facebook数据时,为什么我需要身份验证?

leo*_*ora 2 facebook

我正在使用Facebook C#API创建一个应用程序.

我想阅读这面墙上数据,但是当我调用API并且基本上点击此URL:https://graph.facebook.com/123176767150时,我收到此错误:

{
   "error": {
       "type": "OAuthException",
       "message": "An access token is required to request this resource."
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我需要身份验证才能获取我可以看到的公共数据而无需登录Facebook帐户?

BeR*_*ive 10

因为Facebook并不介意您作为用户看到此信息,但不希望应用程序能够收集数据.显然,使用图形api将每个人的姓名从他们的帖子中删除到组墙(假设)比手动执行它要快得多.没有access_token的唯一公开可用信息是基本用户信息(这仅适用于用户而不是任何其他对象).为了达到你想要的效果,你必须获得一个access_token.

这与用户在登录Facebook时可以看到任何人的朋友这一事实相同,但作为一个应用程序,您只能看到授权用户的朋友.

但是,您可以通过以下方法进行身份验证,以便能够访问非用户特定的私人信息,从而对您的应用程序进行身份验证:

  1. 发出GET请求:

    https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=CLIENT_ID&client_secret=CLIENT_SECRET
    
    Run Code Online (Sandbox Code Playgroud)
  2. Facebook回归:

    access_token=SOME_TOKEN
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用此令牌作为访问令牌,它应该允许您访问该组.我用我的应用程序对此进行了测试,可以确认它是否有效.

  4. 您可以通过请求申请隔离墙信息:

    https://graph.facebook.com/123176767150/feed?access_token=SOME_TOKEN
    
    Run Code Online (Sandbox Code Playgroud)

请参阅此处Authenticating as an Application部分