Facebook graph API - OAuth Token

2022-08-30 16:31:58

我正在尝试使用新的图形API检索数据,但是我从OAuth检索的令牌似乎不起作用。

我打的电话如下;

$token = file_get_contents('https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=<app_id>&client_secret=<app secret>');

这将返回字符串长度为 41 的令牌。为了给您一个返回的示例,我在下面提供了一个示例(将所有数字转换为0,将所有大写字母转换为“A”,将小写字母转换为“a”

access_token=000000000000|AaaAaaAaaAAaAaaaaAaaAa0aaAA.

我获取此访问令牌并将其附加到数据的调用请求,它似乎不是正确的令牌,因为它不返回任何内容。我按如下方式进行数据调用;

file_get_contents('https://graph.facebook.com/<my_page's_id>/statuses?access_token=000000000000|AaaAaaAaaAAaAaaaaAaaAa0aaAA.')

当我直接通过浏览器手动检索此页面时,我收到500 /内部服务器错误消息。

任何援助将不胜感激。


更新:

从那以后,我将方法从file_get_contents()更改为curl。通过检索标头,我收到以下错误消息...

{"error":{"type":"OAuthException","message":"Missing client_id"}}

但我的帖子数组包括“client_id”?!


答案 1

不要使用 type=client_cred,这不是用户授予应用要使用的访问令牌。无需redirect_uri或代码或任何批准即可获取client_cred类型的访问令牌。

Facebook目前实施了OAuth 2的早期草案。因此,目前还没有对“状态”的支持。

但是,您可以将您的州后缀为redirect_uri,这很好,这里要注意的重要一点是您指定的站点网址(这是redirect_uri)

不应该有

问号位于末尾或作为客户端状态后缀的任意位置,无论是否编码。如果您这样做,您将获得可怕的“验证验证码时出错”

不要这样使用

http://www.Redirect.com?

http://www.Redirect.com/ 正确的网址

希望它有帮助。


答案 2

这对我有用:-)

header('Location: https://graph.facebook.com/oauth/access_token?' . http_build_query(array(
    'client_id'     => FB_APP_ID,
    'type'          => 'client_cred',
    'client_secret' => FB_SECRET,
    'code'          => $code)));

当然,您将使用file_get_contents,并从响应中解析令牌


推荐