如何通过OAUTH请求user_access_token而不是app_access_token

时间:2014-06-15 17:27:08

标签: facebook oauth access-token facebook-access-token

我试图通过对我的网络服务的AJAX调用来吸引用户的Facebook墙/馈送。实际上,webservice本身只是缓存了之前的请求,因此每当有人想要查看帖子列表时我都不必访问Facebook(我将它们放在30分钟的缓存ATM上)。只要我拉动他们的" Feed"通过以下网址:

https://graph.facebook.com/v2.0/{0}/feed

其中{0}是用户的ID。但是,当我只是想要请求用户的状态时,为了避免墙上出现的所有其他垃圾

https://graph.facebook.com/v2.0/{0}/statuses

我收到400请求错误。我钻得更深了,这是我收到的实际回应:

{
   "error": {
   "message": "(#100) Requires user session",
   "type": "OAuthException",
   "code": 100
   }
}

经过一段谷歌搜索后,我相信我已经将问题追溯到我要求APP访问令牌而不是USER访问令牌的事实。目前我的请求字符串格式如下:

https://graph.facebook.com/oauth/access_token?client_id={0}&client_secret={1}&grant_type=client_credentials

我一直在寻找高低,但我还没有找到正确的格式来请求特定用户的访问令牌。例如,如果我想提取https://www.facebook.com/DrPepper等公开个人资料的状态列表,我将如何获得该状态?

1 个答案:

答案 0 :(得分:1)

您需要通过oAuth Dialog授权用户(或您自己),这将返回code(随机字符串),该代码可以一次性访问/oauth/access_token个端点以返回{ {1}}

access_token

发送/oauth/access_token?client_id={app_id}&client_secret={app_secret}&code={code} (它必须与您的应用信息中心中的网站网址相匹配)参数将生成60天redirect_uri,显然您需要此

您可以将response_type更改为access_token而不是token,这样您就不必请求code oAuth Dialog - Parameters

另一种解决方案

坚持/oauth/access_token并使用应用{ID}/feed,因为它永不过期,

access_token

并使用PHP或您正在使用的任何内容来检查/{ID}/feed?fields=message,type 字段