使用没有访问令牌的Facebook Graph API获取公共页面状态

chr*_*ofr 64 authentication permissions facebook facebook-graph-api

我正在尝试使用Facebook Graph API从公共页面获取最新状态,让我们说http://www.facebook.com/microsoft

根据http://developers.facebook.com/tools/explorer/?method=GET&path=microsoft%2Fstatuses - 我需要一个访问令牌.由于微软的页面是"公开的",这种情况肯定是这样吗?没有访问令牌,我无法访问这些公共状态吗?

如果是这种情况,为我的网站创建访问令牌的正确方法如何?我有一个App ID,但http://developers.facebook.com/docs/authentication/上的所有示例都描述了处理用户登录.我只想在Microsoft页面上获取最新状态更新并将其显示在我的网站上.

Ana*_*sky 63

这是设计的.一旦可以从没有访问令牌的公共页面获取最新状态.这已被更改,以阻止对API的匿名匿名访问.您可以使用图形API通过以下调用获取应用程序的访问令牌(如果您没有为您的网站设置Facebook应用程序 - 您应该创建它):

https://graph.facebook.com/oauth/access_token?
client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&
grant_type=client_credentials  
Run Code Online (Sandbox Code Playgroud)

这称为App Access Token.然后使用上面的app访问令牌继续进行实际的API调用.

希望这可以帮助

  • 哎呀!小心 - 不要在公共场合公布你的应用秘密.这是个秘密!如果它仍然在服务器端,这个代码很好. (10认同)
  • 结果访问令牌永远是好的吗?我必须为每个客户做这个吗?如果您要将它们免费赠送,为什么需要令牌呢?跳绳运动.:p (10认同)
  • 在我获得应用程序令牌并将其传递给"https://graph.facebook.com/PADEID/statuses?access_token="后,我收到错误"需要用户访问令牌才能请求此资源". (4认同)
  • 出于安全原因,不应在客户端使用秘密令牌,请参阅https://developers.facebook.com/docs/facebook-login/security/#appsecret (2认同)
  • 看起来这将继续适用于之前访问过此数据的应用程序,但新应用程序将需要获得批准.此外,在我使用开发应用程序进行的测试中,让我相信如果没有用户或页面访问令牌,您的应用程序需要专门批准.(当开发应用无法执行操作时很难提交应用评论) (2认同)

Has*_*que 34

您可以使用AppID和密钥来获取任何页面的公开帖子/摘要.这样您就不需要获取访问令牌.如下所示.

https://graph.facebook.com/PAGE-ID/feed?access_token=APP-ID|APP-SECRET
Run Code Online (Sandbox Code Playgroud)

并获得帖子.

https://graph.facebook.com/PAGE-ID/posts?access_token=APP-ID|APP-SECRET
Run Code Online (Sandbox Code Playgroud)

  • 对于其他看到此答案的人来说,这种类型的访问令牌称为[App Access Token](https://developers.facebook.com/docs/facebook-login/access-tokens#apptokens),他们确实说明了这种组合AppId和AppSecret的文档中的访问令牌. (4认同)
  • 看来facebook现在已经锁定了这个:(现在获取页面的事件需要一个页面访问令牌 (4认同)
  • 没有到期时间,它工作正常.但是不要相信Facebook API会不断改变主意:) (2认同)