Facebook Graph API - 授权类型?

时间:2010-05-15 00:18:35

标签: facebook

我正在努力使用新的Facebook Graph API,也许这里有人可以提供帮助。

这是我想要做的:提供'登录w / FB'按钮,抛出/授权,获取代码,抛出/ access_token,获取access_token,并且能够点击https://graph.facebook.com/me关于用户的信息。

当我尝试在/ authorize调用中使用type = client_cred时,我得到一个access_token,它允许我点击带有userID或名称的URL,但不是/ me。我收到一条错误消息,指出我需要一个有效的令牌。

如果我不能打/我,我怎么弄清楚当前用户是谁?

如果我希望网站访问用户数据,我应该在类型参数中使用什么?我看过类型= web_server等的帖子,但我似乎无法找到一种确定的方法,我认为这很简单......

提前感谢您提供的任何帮助......

5 个答案:

答案 0 :(得分:5)

  

当我尝试在/ authorize调用中使用type = client_cred时,我得到一个access_token,它允许我点击带有userID或名称的URL,但不是/ me。我收到一条错误消息,指出我需要一个有效的令牌。

client_cred旨在让您的应用验证它确实是应用。它用于订阅Facebook的实时更新API之类的东西。它提供用户身份验证。

您需要关注Facebook的OAuth instructions。它不以任何方式使用type参数。你将成为:

该访问令牌可让您以用户身份运行并访问me网址。

答案 1 :(得分:4)

我有同样的问题,我解决了。

首先:不要使用& type = client_cred

第二:到处使用相同的URL !!!

我的例子:

我的第一个链接:

<a href="https://www.facebook.com/dialog/oauth?client_id=_MY_APP_ID_&state=_RANDOM_NUMBER_&redirect_uri=http://mysite.ru/ru/site_users.html?op=fbreg">FB login</a>  

当我拿到代码时:

$nexturl  = "https://graph.facebook.com/oauth/access_token?client_id=".$AppId."&redirect_uri=http://mysite.ru/ru/site_users.html?op=fbreg&client_secret=".$AppSec."&code=".$fbCode;
$response = @file_get_contents($nexturl);   
$params   = null;
parse_str($response, $params);
$graph_url = "https://graph.facebook.com/me?access_token=".$params['access_token'];
$arrResponse = json_decode(@file_get_contents($graph_url));

在$ arrResponse中,我获得了有关当前用户的所有信息。

网址的值在任何地方。在代码和https://developers.facebook.com/apps/

就我而言,这是:http://mysite.ru/ru/site_users.html?op=fbreg

使用我的示例以下内容均不正确。

  • http://mysite.ru/
  • http://mysite/
  • http://mysite/ru/site_users.html

多数民众赞成。非常愚蠢的问题。我解决了三天:(

答案 2 :(得分:1)

答案 3 :(得分:0)

你解决了吗?我和你的一样有同样的错误 我找到一个解释这个问题的页面 http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/

如果使用type = client_cred,则需要将“me”更改为用户ID,并且userid可以在“code”参数中找到,只看到airtle:)

答案 4 :(得分:0)

这个答案应该澄清nategood的最后评论

  

没关系。想出了我的问题。在进行authroize和access_token调用时,100%确保redirect_uri是相同的! - nategood 3月24日0:54

我很长时间都在努力解决这个问题。 Facebook的文档很差,这些网站上的答案似乎属于以下两种类别之一:使用type = client_cred或者不使用 类型。

不要使用&#34; type = client_cred&#34;。 关注facebook documentation,只需确保您在代码中使用的redirect_uri请求:
http://www.facebook.com/dialog/oauth/?

与您在access_token请求中使用的redirect_uri相同: * HTTPS:?//graph.facebook.com/oauth/access_token *