У меня есть страница поклонника Facebook, и я хочу проверить, посетил ли пользователь страницу на странице, чтобы показать содержимое. Он работает, когда я зарегистрирован как администратор, но когда другая учетная запись посещает страницу, facebook->getUser()
всегда возвращает 0
require 'src/facebook.php'; $facebook = new Facebook(array( 'appId' => 'ID', 'secret' => 'HASH', 'cookie' => true, )); $user = $facebook->getUser(); //Page id $page = '215010578537112'; $likeID = $facebook->api(array( 'method' => 'fql.query', 'query' => 'SELECT uid FROM page_fan WHERE uid =' . $user . 'AND page_id =' .$page )); if ( $likeID ) { }else{ }
Поскольку это страница фанатов, вам не нужно вызывать запрос FQL, так как запрос FQL требует, чтобы пользователь сначала разрешил ваше приложение. Facebook отправит параметр posts_request post на страницу вашего поклонника iframe. См. Этот ответ о том, как декодировать этот параметр signed_request и проверить, являются ли они фанатом вашей страницы или нет.
Попробуйте эту версию, вам не нужно ничего особенного, чтобы проверить, нравится ли вам ваша страница:
// find out if the user likes the page or not $signed_request = $_REQUEST["signed_request"]; list($encoded_sig, $payload) = explode('.', $signed_request, 2); $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); // content to show if they don't like the page if (empty($data["page"]["liked"])) { ?> <p>Not a fan</p> <?php // content to show if they do like the page } else { <div>Is a fan</div>