【问题标题】:Facebook Graph API problemFacebook Graph API 问题
【发布时间】:2011-09-26 15:26:23
【问题描述】:
我在使用 Facebook 身份验证时遇到了一些问题。即使我已登录,函数 getUser() 也会返回 0
这是我的代码:
$fb_params = array(
'appId' => APP_ID,
'secret' => SECRET_ID
);
$fb = new Facebook($fb_params);
echo $fb->getUser(); // UID
有人有想法吗?
PS : '我不能长时间访问$fb->api('/me'),它说它需要access_token,我认为它与身份验证问题有关......'
谢谢
【问题讨论】:
标签:
facebook
oauth
facebook-graph-api
access-token
【解决方案1】:
您当前没有以用户身份进行身份验证,仅作为应用程序进行身份验证。因此,Facebook API 无法向您显示 /me 页面或响应 getUser() 调用,因为它不知道您尝试代表哪个用户访问 API(即“谁是 /me ?”)。您也只能访问可公开访问的信息。
您需要让用户通过 Oauth2 对您的应用程序进行身份验证,存储您返回的 access_token,然后将其包含在以后的任何调用中(例如 WIRQjCey1.3600.1309525200.0-509450630|eD6SAR">https://graph .facebook.com/me?access_token=2227470867|2.AQB-_WIRQjCey1.3600.1309525200.0-509450630|eD6SAR...)。
你可以使用 PHP SDK 来做到这一点
$loginUrl = $fb->getLoginUrl();
echo "<a href='$loginUrl'>Login with Facebook</a>";
单击该链接并让用户进行身份验证会将 access_token 存储到 $_SESSION,当您点击刷新“new Facebook($fb_params);”时构造函数将从 $_SESSION 中挑选出访问令牌并将其用于所有未来的调用,然后调用像 $fb->getUser();会正确返回。
SDK 的示例文件夹中有一个功能示例,此处:
https://github.com/facebook/php-sdk。
您可以在作为应用程序(仅限公共数据访问)和用户身份验证时使用它来尝试调用。