用户访问令牌,用于通过脸谱图搜索

时间:2011-10-17 10:57:42

标签: php facebook-graph-api facebook facebook-c#-sdk

根据给出的here指令,搜索公共信息(如https://graph.facebook.com/search?q=QUERY&type=OBJECT_TYPE)需要有一个有效的访问令牌。据我所知,访问令牌是指用户授权应用访问其信息的时间;但这是灼热的公共信息。如何获取应用访问令牌以搜索公共信息?

在该页面中,Facebook会自动将我的访问令牌添加到链接

https://graph.facebook.com/search?q=watermelon&type=post&access_token=MY_ACCESS_TOKEN

我的应用为https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=SECRET_ID&grant_type=client_credentials

创建了一个访问令牌

当我在网址https://graph.facebook.com/search?q=watermelon&type=post&access_token=GENERATED_ACCESS_TOKEN中使用生成的访问令牌时,会出现错误

{
   "error": {
      "message": "A user access token is required to request this resource.",
      "type": "OAuthException"
   }
}
  1. 如何通过我的应用生成访问令牌?
  2. 或者我是否需要通过自己的用户帐户生成访问令牌?如果有,怎么样?
  3. 由于搜索公开个人资料,Facebook在每次搜索时都不需要授权,我可以生成永久访问令牌来执行不同的搜索吗?

5 个答案:

答案 0 :(得分:6)

图谱API搜索界面在Q3 2013迁移中有待更改。 以下更改将于2013年7月10日生效:

图表API搜索更改 除了地方和页面之外的所有搜索Graph API调用都需要应用访问令牌。将不再支持搜索应用程序。

https://developers.facebook.com/blog/post/2013/04/03/platform-updates--operation-developer-love/

答案 1 :(得分:3)

使用

搜索facebook图表API
  

http://graph.facebook.com/search?q=watermelon&type=post

您需要有效的用户访问令牌。用户访问令牌与App Access令牌不同。当用户使用不同的访问权限验证您的应用时,会创建用户访问令牌,该权限通常接近212个字母。

2013年7月在图表API中进行了更改,您需要拥有有效的用户访问令牌来搜索用户和帖子。您自己可以生成用户访问令牌,对您的应用进行身份验证并为您的应用生成用户访问令牌。

但问题仍然存在,我们应该如何为我们的应用生成用户应用令牌,而无需让其他用户对我们的应用进行身份验证?

答案 2 :(得分:1)

您请求的访问令牌看起来像“应用程序”访问令牌。此令牌与“用户”或“页面”访问令牌不同,用于不同的事物。

https://developers.facebook.com/docs/howtos/login/login-as-app/

  

这可用于修改App的参数,创建和   管理测试用户,或者阅读您的应用程序的见解。   应用程序访问令牌也可用于将内容发布到Facebook上   代表已授予您发布许可的人   应用

根据您尝试实际执行的操作,应用程序令牌可能是错误的OAuth形式。您的示例(使用术语“西瓜”搜索公开帖子)不需要OAuth令牌,因此您显然尝试使用其他类型的图表搜索。不说你实际上想要访问的是什么,实际上无法正确地告诉你。

但是,我猜你正在尝试访问需要特定用户权限的图形对象。如果是这种情况,那么您需要首先通过请求所需的权限范围来获得该用户的权限。

这将为您提供该用户的短期访问令牌,该令牌将允许您进入您已请求权限的权限范围内的任何内容。

此令牌仅在用户登录您的应用后短时间内持续。它也可以升级为长期访问令牌

https://developers.facebook.com/docs/howtos/login/extending-tokens/

答案 3 :(得分:-2)

您不需要传递任何令牌来搜索公共信息(除非您想在用户的上下文中搜索)。只需拨打以下网址即可查看该网址。请标记我使用了 http 而不是https。

http://graph.facebook.com/search?q=watermelon&type=post

但是为了让我的回答更清楚 - 通过正确授予access_token,我可以调用上述url的https版本(https版本需要访问令牌),它可以正常工作而没有任何问题。

答案 4 :(得分:-2)

如果您是以编程方式搜索并且最终用户永远不会看到搜索网址,则可以使用此代码:

&access_token=app_id|app_secret

有关此内容的更多信息:https://developers.facebook.com/docs/facebook-login/access-tokens/