В настоящее время я дублирую ту же проблему (плюс еще 1), и я обнаружил, что FacebookHelper.php, похоже, неправильно обрабатывает параметры $:
if((isset($options['redirect']) && $options['redirect']) || $options['custom']){
$options['redirect'] = Router::url($options['redirect']);
$onclick = "logout('".$options['redirect']."');";
if(isset($options['confirm'])){
$onclick = 'if(confirm("'.$options['confirm'].'")){'.$onclick.'}';
}
if($options['img']){
$source = '/Facebook/img/'.$options['img'];
return $this->Html->image($source, array(
'alt' => $options['alt'],
'id' => $options['id'],
'url' => '#',
'onclick' => $onclick));
}
else { /* HERE */
return $this->Html->link($options['label'], '#', array(
'onclick' => $onclick, 'id' => $options['id']));
}
} else {
$source = '/Facebook/img/facebook-logout.png';
return $this->Html->image($source, array(
'alt' => 'Facebook logout',
'url' => '#',
'id' => $options['id'],
'onclick' => 'logout();'));
Я не очень хорошо разбираюсь в PHP и могу ошибаться, но, похоже, если заполнить опции $, например перенаправить, но не IMG Param, то на экране не появляется кнопка (она идет «ЗДЕСЬ»). Изменяя код выше, я могу получить ссылку на личную книгу, и выход из FB работает. Теперь я отлаживаю проверку подлинности, в которой сеансы продолжают восстанавливаться после выхода из системы (без подключения к FB).
Мой «фиксированный код», все еще WIP и уродлив:
if((isset($options['redirect']) && $options['redirect']) || $options['custom']){
debug($options);
$onclick = "logout('".$options['redirect']."');";
if(isset($options['confirm'])){
$onclick = 'if(confirm("'.$options['confirm'].'")){'.$onclick.'}';
}
if($options['img']){
$source = '/Facebook/img/'.$options['img'];
return $this->Html->image($source, array(
'alt' => $options['alt'],
'id' => $options['id'],
'url' => '#',
'onclick' => $onclick));
}
else {
//Yes it gets here!
$source = '/Facebook/img/facebook-logout.png';
$redirect=$options['redirect'];
return $this->Html->image($source, array(
'alt' => 'Facebook logout',
//'url' => '#',
'url' => $redirect,
'id' => $options['id'],
'onclick' => "logout('$redirect');"));
}
} else {
$source = '/Facebook/img/facebook-logout.png';
return $this->Html->image($source, array(
'alt' => 'Facebook logout',
'url' => '#',
'id' => $options['id'],
'onclick' => 'logout();'));
}
}
`