Подтвердить что ты не робот

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 то, что я хочу.

4b9b3361

Ответ 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.

Ответ 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);