【问题标题】:Facebook Graph API returns false for Page AccountsFacebook Graph API 为页面帐户返回 false
【发布时间】:2012-05-11 00:30:48
【问题描述】:
我正在尝试为我的网站使用 facebook connect。
当我尝试以普通用户身份登录时,一切都很好,所有正确的信息都会返回。
但是,当我以“PAGE”帐户登录时,事情开始变得很奇怪。
成功登录后,如果我使用以下内容:
https://graph.facebook.com/me/?access_token={access token},我得到了“假”。
如果我将“我”替换为页面帐户的 ID,那么我会得到正确的信息。
另一个问题是,在成功登录为“PAGE”帐户后,fbs_appID 会话 cookie 设置了错误的“uid”。使用普通用户帐户一切正常。
我页面上的所有设置都是“13+”,并且没有国家限制。
有人可以帮忙吗?
【问题讨论】:
标签:
facebook
facebook-graph-api
【解决方案1】:
我们得到了同样的行为。
如果在以 Facebook 主页身份登录时登录,Facebook 通常会显示一个对话框,上面写着“您无法以 Facebook 主页身份登录。切换到 xxx 用户”。
因此,您应该始终在您的 FB 连接代码中获得一个普通用户。
但有时 Facebook 似乎无法正确处理该问题,并允许用户尝试以 Facebook 主页的身份登录。然后你得到的访问码不允许你获取用户信息。
所以我认为你无能为力,只是警告用户他必须以普通用户 Facebook 个人资料的身份登录。
这是我们获得的完整交通信息:(代码匿名):
GET /oauth/access_token?client_id=xxxxx&redirect_uri=xxxxx&client_secret=xxxx&code=xxx HTTP/1.1
连接:关闭
主持人:graph.facebook.com
HTTP/1.1 200 正常
缓存控制:私有、无缓存、无存储、必须重新验证
内容类型:文本/纯文本;字符集=UTF-8
过期:2000 年 1 月 1 日星期六 00:00:00 GMT
Pragma:无缓存
X-FB-修订版:401390
X-FB-服务器:10.42.17.21
连接:关闭
日期:格林威治标准时间 2011 年 7 月 6 日星期三 10:38:11
内容长度:122
access_token=xxxx&expires=4909
GET /me?access_token=xxxx HTTP/1.1
连接:关闭
主持人:graph.facebook.com
HTTP/1.1 200 正常
缓存控制:私有、无缓存、无存储、必须重新验证
内容类型:文本/javascript;字符集=UTF-8
ETag:“7cb6efb98ba5972a9b5090dc2e517fe14d12cb04”
过期:2000 年 1 月 1 日星期六 00:00:00 GMT
P3P:CP=\"Facebook 没有 P3P 政策。在此处了解原因:http://fb.me/p3p\"
Pragma:无缓存
X-FB-修订版:401390
设置 Cookie:datr=aTsUTlxHtaaaK67aCdYmQbCO;过期=格林威治标准时间 2013 年 7 月 5 日星期五 10:39:37;路径=/;域=.facebook.com; httponly
X-FB-服务器:10.32.3.116
连接:关闭
日期:格林威治标准时间 2011 年 7 月 6 日星期三 10:39:37
内容长度:5
错误的
【解决方案2】:
我已从页面设置中删除了“默认”国家/地区限制,并且数据通过 Graph API 正常。最好知道它为什么会影响 api 请求。
【解决方案3】:
我认为您的登录部分有问题。
如果您使用的是 Javascript SDK:
试试这个console.dir(FB.getSession());
如果您使用的是 PHP SDK:
然后尝试:
$session = $facebook->getSession();
print_r($session);
如果您获得正确的会话,请在控制台中检查。
http://graph.facebook.com/me 始终可用,除非您已登录。它甚至不需要任何额外的权限。