我正在努力使用新的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等的帖子,但我似乎无法找到一种确定的方法,我认为这很简单......
提前感谢您提供的任何帮助......
答案 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)
我认为它应该是这样的:
范围应指定您需要的权限http://developers.facebook.com/docs/authentication/permissions
可在此处找到显示值http://developers.facebook.com/docs/authentication/
答案 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 *