API-интерфейс Facebook Graph - Получить идентификатор из страницы с URL-адресом Facebook
Я видел этот вопрос, но то, что я хочу, отличается.
Я хочу получить идентификатор Facebook не из общего URL-адреса (и, следовательно, условного, если он имеет кнопку Like или нет). Я хочу получить идентификатор Facebook, указанный на странице Facebook, используя Graph API.
Обратите внимание, что страницы Facebook могут иметь несколько форматов, например:
http://www.facebook.com/my_page_name
http://www.facebook.com/pages/my_page_name
http://www.facebook.com/my_page_ID
Я знаю, что могу сделать некоторое регулярное выражение, чтобы получить имя my_page или my_page_ID, но мне интересно, знает ли кто-нибудь, поддерживает ли GraphAPI то, что я хочу.
Ответы
Ответ 1
Мне кажется, что самое простое решение для того, что вы описываете, - это просто получить идентификатор/имя из URL-адреса, который у вас есть, используя lastIndexOf ( "/" ) (для чего у большинства языков есть эквивалент), а затем получить "https://graph.facebook.com/" + id.
Данные, возвращаемые этим URL-адресом, имеют идентификатор (т.е.: 6708787004) и имя пользователя (например, southpark), поэтому независимо от того, какой идентификатор вы используете (что вы извлекаете из URL-адреса с использованием lastIndexOf), вы должны получить тот же результат.
Изменить
Этот код:
identifier = url.substring(url.lastIndexOf("/"))
graphUrl = "https://graph.facebook.com/" + identifier
urlJsonData = getGraphData(graphUrl)
Должно работать одинаково (это результат с теми же данными) для обоих:
url = http://www.facebook.com/southpark
и
url = http://www.facebook.com/6708787004
(вам, очевидно, потребуется реализовать метод getGraphData).
Кроме того, вторая форма url в вопросе не является допустимым URL-адресом для страниц, по крайней мере, не из моих тестов, я получаю:
Возможно, вы нажали ссылку с истекшим сроком действия или неправильно указали адрес. Некоторые веб-сайты адреса чувствительны к регистру.
Ответ 2
Ответ на вопрос размещен выше, но метод, показанный ниже, работает нормально, нам не нужно выполнять regex
на URL-адресах страницы Facebook.
Я получил ответ этим методом
FB.api('/any_fb_page_url', function(response){
console.log(response);
});
any_fb_page_url может быть любого из следующих типов
https://www.facebook.com/my_page_name
https://www.facebook.com/pages/my_page_name
https://www.facebook.com/my_page_ID
Это также указано в вопросе выше
Этот код протестирован на консоли JS, доступной на инструментах сайта разработчиков Facebook.
Ответ 3
Вы можете получить идентификатор страницы с помощью API ниже
https://graph.facebook.com/v2.7/smhackapp?fields=id,name,fan_count,picture,is_verified&access_token= access_token & format = json
Эталонное изображение
Ответ 4
<?php
function getFacebookId($url) {
$id = substr(strrchr($url,'/'),1);
$json = file_get_contents('http://graph.facebook.com/'.$id);
$json = json_decode($json);
return $json->id;
}
echo getFacebookId($_GET['url']);
?>
Это пример PHP, как получить идентификатор.
Ответ 5
В этом ответе учитывается, что URL-адрес может заканчиваться завершающим косой чертой, что-то, что, по-видимому, теперь имеет в своих URL-адресах Facebook.
function getId(url) {
var path = new URL(url).pathname;
var parts = path.split('/');
parts = parts.filter(function(part) {
return part.length !== 0;
});
return parts[parts.length - 1];
}
Ответ 6
Вы можете использовать запросы и повторные модули в Python
Код:
import requests,re
profile_url = "https://www.facebook.com/alanwalker97"
idre = re.complie('"entity_id":"([0-9]+)"')
con = requests.get(profile_url).content
id = idre.findall(con)
print("\n[*] ID: "+id[0])
Выход:
[*] ID: 100001013078780
Ответ 7
Этот ответ обновлен и проверен в 2019 году: и он очень прост, потому что вам не нужно ничего извлекать из ссылки ссылки для примеров: https://www.facebook.com/pg/Vaireo-Shop-2138395226250622/about/ https ://www.facebook.com/withminta
https://graph.facebook.com/?id=link&access_token=xxxxxxxx
ответ: {"name": "Vaireo Shop", "id": "2138395226250622"}
полный ответ nodeJS:
async function getBusinessFromFBByPageURL(pageURL: string) {
const accessToken = process.env.fb_app_access_token;
const graphUrl = 'https://graph.facebook.com/${pageURL}? access_token=${accessToken}';
const fbGraphResponse = await Axios.get(graphUrl);
Ответ 8
Возможно, вы можете просмотреть https://developers.facebook.com/docs/reference/api/#searching docs: поиск по нескольким типам, и если вы найдете то, что ищете оттуда.