【发布时间】:2013-10-11 15:12:04
【问题描述】:
我正在使用以下 URL 获取 Facebook Auth Token 来管理页面和页面事件...
https://www.facebook.com/dialog/oauth?client_id=CLIENTID&redirect_uri=REDIRECTURL&scope=manage_pages,create_event&response_type=token
这将通过授权过程并返回令牌,该令牌将保存在我的数据库中。然后,我尝试执行以下操作来检索参加页面活动之一的人的缩略图...
function fbEventRSVPPhotos($eventID){
$authToken = eto_get_option('eto_auth_fbauthtoken') //pulled from database;
$json = file_get_contents("https://graph.facebook.com/" . $eventID ."/attending?access_token=" . $authToken);
$attendees = json_decode($json, true);
echo '<div class=attendee-photos>';
foreach($attendees['data'] as $attendee) {
echo '<img class="facebook-thumb toggleTooltip" title="' . $attendee['name'] . ' is attending" src="https://graph.facebook.com/' . $attendee['id'] . '/picture?type=square">';
}
echo '</div>';
}
当我登录到 Facebook 时,此功能非常有用,但是一旦我退出,我会得到以下...
Warning: file_get_contents(https://graph.facebook.com/MYEVENTID/attending?access_token=MYTOKEN) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in PATHTOSCRIPT on line 94
Warning: Invalid argument supplied for foreach() in PATHTOSCRIPT on line 97
然后即使在重新登录后它仍会继续显示此 PHP 错误。我基本上每次重新登录时都必须重新生成身份验证令牌。
谁能帮我理解为什么会发生这种情况以及如何解决?
【问题讨论】:
-
我认为这是预期的行为。更多信息请查看this Article。
-
场景 4:用户退出 Facebook 听起来像是我的问题,但他们之所以会发生这种情况是因为我在身份验证时没有要求
offline_access,但是offline_access 已被弃用,我不能再请求它了。在没有离线访问的情况下如何解决或解决此问题? -
我已经有一段时间没有使用 Facebook API 进行过多的工作了(它每个月左右都会更改),但据我所知,您可以获得的最大令牌是持续 60 天的令牌(只要用户不注销等)。 Facebook 发布了一些关于迁移的信息here。
-
所以,如果我正确理解这一点,除非我登录到管理页面事件的 Facebook 帐户,否则我将无法从具有任何访问权限的事件中提取 RSVP 信息令牌,因为
offline_access被禁用?
标签: php authentication facebook-php-sdk