当前位置:  开发笔记 > 编程语言 > 正文

Facebook图形API - OAuth令牌

如何解决《Facebook图形API-OAuth令牌》经验,为你挑选了4个好方法。

我正在尝试使用新的图形API检索数据,但是我从OAuth中恢复的令牌似乎没有起作用.

我正在做的电话如下;

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

这将返回一个字符串长度为41的标记.为了给出一个示例,我在下面提供了一个示例(将所有数字转换为0,将所有大写字母转换为'A',将小写字母转换为'a'

access_token=000000000000|AaaAaaAaaAAaAaaaaAaaAa0aaAA.

我使用此访问令牌并将其附加到数据的调用请求,它似乎不是正确的令牌,因为它什么都不返回.我按如下方式进行数据调用;

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

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

任何帮助都将得到很好的赞赏.


更新:

我已经将方法从file_get_contents()更改为curl.通过检索标题我得到以下错误消息...

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

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



1> PrateekSaluj..:

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

Facebook目前实施了OAuth 2的早期草案.所以还没有对"国家"的支持.

但是你可以将你的状态后缀为redirect_uri很不错,这里要注意的重点是你指定的网站网址(这是redirect_uri)

不应该有

最后的问号或任何后缀为客户端状态,编码与否的任何地方.如果你这样做,你会得到可怕的"错误验证验证码"

不要那样用

http://www.Redirect.com?

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

希望能帮助到你.


这是正确的答案.你的redirect_uri必须以/结尾.谢谢你告诉我们!

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并从响应中解析令牌


+1.添加type = client_cred为我修复了它.
事实证明,facebook的oauth实现有一些与redirect_uri参数内容相关的奇怪错误.如果您的重定向uri包含某些字符(例如正确的url编码冒号),它将会阻塞.

3> Francis Shan..:

我遇到了完全相同的问题,但事实证明问题不是redirect_uri参数的编码,或者我有一个尾随斜杠或问号只是我传入了两个不同的重定向网址(没有读过那个规范)时间).

redirect_uri仅用作重定向一次(第一次),使用"代码"标记重定向回依赖方.第2次,在REDIRECT_URI传递给auth服务器,但这个时候你会期望它不使用(重定向),而它的使用认证服务器来验证码.服务器使用access_token进行响应.

http://tools.ietf.org/html/draft-ietf-oauth-v2-05#section-3.5.2

你会注意到facebook文档(这很糟糕)说fetch "通过获取 https://graph.facebook.com/oauth/access_token来为访问令牌交换它".

总而言之,我没有必要对Uri进行编码或执行任何特殊操作,只需传入相同的redirect_uri两次,然后获取第二页以获取内部的access_token.



4> 小智..:

您可以使用curl通过终端(OSX用户)请求访问令牌:

curl -F type=client_cred -F client_id=xxxxxxxxxxxxxxx -F client_secret=c0f88xxxxxxxxxxxxxxxxxx1b949d1b8 https://graph.facebook.com/oauth/access_token

获得访问令牌后,您可以在将来的curl请求中使用它来通过新的图API进行更改:

将消息发布到个人资料ID:

curl -F 'access_token=xxxxxxxxxxxxx|mGVx50lxxxxxxxxxxxxhzC2w.'  -F 'message=Hello Likers'  -F 'id=1250000000000905'  https ://graph.facebook.com/feed

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有