Для приложения, которое я разрабатываю, мы разрешаем пользователям добавлять ссылку на свою страницу Facebook (строго страница, а не профиль, а не группа, только страница).
Я не могу найти ничего о проверке того, действительно ли URL-адрес, который я получил (серверная, PHP), действительный URL-адрес страницы.
Еще лучше, если я смогу получить «истинный» URL-адрес, т. Е. Минус #! если есть. Я могу справиться с этим с помощью синтаксического анализа, но я предпочел бы, чтобы он сказал мне.
У меня есть аналогичная задача, сначала я прошу Facebook для нормализованного URL (без! # И т. Д.):
require_once('facebook.php'); function getNormalized($anylink){ $facebook = new Facebook(array( 'appId' => 'yourapplicationID', 'secret' => 'yoursecretcode', 'cookie' => true, )); $res = $facebook->api(array( 'method' => 'fql.query', 'query' => 'select url, normalized_url from link_stat where url = "'.$anylink.'" ;' )); if (!isset($res[0]['normalized_url'])) { //If not isset -> set with dumy value, example echo '<br>You have not entered Facebook Page URL or its not accessible. Please go back and try again.'; exit; } return $res; }
К сожалению, не существует способа обойти URL-адрес, если вы не можете запросить их только для идентификатора или имени пользователя. Если вы не можете этого сделать, они запрашивают URL-адрес, анализируют либо имя пользователя, либо идентификатор страницы. Это будет либо cocacola, либо 122456743. Оттуда используйте график api:
http://graph.facebook.com/cocacola или http://graph.facebook.com/122456743 в любом случае вы получите следующий JSON:
{ "id": "40796308305", "name": "Coca-Cola", "picture": "http://img.ruphp.com/php/50516_40796308305_7651_s.jpg", "link": "http://www.facebook.com/coca-cola", "category": "Consumer_products", "website": "http://www.coca-cola.com", "username": "coca-cola", "products": "Coca-Cola is the most popular and biggest-selling soft drink in history, as well as the best-known product in the world.\n\nCreated in Atlanta, Georgia, by Dr. John S. Pemberton, Coca-Cola was first offered as a fountain beverage by mixing Coca-Cola syrup with carbonated water. Coca-Cola was introduced in 1886, patented in 1887, registered as a trademark in 1893 and by 1895 it was being sold in every state and territory in the United States. In 1899, The Coca-Cola Company began franchised bottling operations in the United States.\n\nCoca-Cola might owe its origins to the United States, but its popularity has made it truly universal. Today, you can find Coca-Cola in virtually every part of the world.", "fan_count": 17367199 }
Затем, чтобы определить, является ли это страницей или пользователем, просто проверьте наличие свойства категории. Каждая страница будет иметь категорию. Профили пользователя никогда не будут обладать свойством категории.
Вы также можете использовать FQL, но это немного сложнее и не нужно. http://developers.facebook.com/docs/reference/fql/page
вы можете использовать график api для доступа к объекту по id, который либо является идентификатором страницы, либо именем страницы, затем вы получаете json-объект или код ошибки … ex https://graph.facebook.com/cocacola
Мне нужно что-то, что проверено, чтобы убедиться, что это действительная страница или группа. Мой пользователь отправляет текстовое поле, которое приходит через $_POST
как $_POST['mu_facebook']
if(class_exists('Facebook')){ $facebook = new Facebook(array( 'appId' => 'yourapplicationID', 'secret' => 'yoursecretcode', 'cookie' => true, )); //break up the saved URL to see what we're dealing with $parts = explode('/', $_POST['mu_facebook']); if($key = array_search('groups', $parts)) $query = $parts[$key+1]; //if this is a group URL, the ID will be in the next key after /group/ else $query = $_POST['mu_facebook']; try { $fb_data = $facebook->api($query); } catch (FacebookApiException $e){ //insert your own error here - Facebook did not recognize this object (group id failures will happen here) } //If FB doesn't recognize the URL, the API simply shows the requested URL as the id or returns an object wth type = 'website' (Page URL failures will happen here) if($fb_data["id"] && $fb_data["id"] !== $_POST['mu_facebook'] && $fb_data["type"] !== "website"){ //We have a valid URL update_as_site_option('mu_facebook'); } else { //insert your own error here - Facebook did not recognize this object } }