Finesse
@Finesse

Как получить информацию о группе Facebook по её адресу?

На вход подаётся URL группы, который не содержит её идентификатор. Например, https://www.facebook.com/groups/primorye/

Как, имея такой адрес и не имея пользовательского токена (есть токен приложения), автоматически получить идентификатор группы или информацию о группе (в формате Graph API)?
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 1
Finesse
@Finesse Автор вопроса
Нашёл грязный способ: распарсить идентификатор из HTML кода страницы на основном сайте https://www.facebook.com/groups/адрес_группы/. А затем получить информацию о группе через Graph API,

Пример получения идентификатора группы на PHP:
function getGroupID( $name )
{
    $url = 'https://www.facebook.com/groups/' . urlencode( $name ) . '/';

    $curl = curl_init( $url );
    curl_setopt( $curl, CURLOPT_TIMEOUT, 10 );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
    curl_setopt( $curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/601.7.7" );  // Иначе Facebook не отдаст ответ
    $html = curl_exec( $curl );
    curl_close($curl);

    if ( preg_match( '~"fb://group/(?:\?id=|.{0})([0-9]+)"~u', $html, $matches ) )
       return (int)$matches[ 1 ];

    if ( preg_match( '~"group_id"\s*:\s*([0-9]+)~u', $html, $matches ) )
       return (int)$matches[ 1 ];

    if ( preg_match( '~"/ajax/groups/membership[^"]+group_id=([0-9]+)"~u', $html, $matches ) )
       return (int)$matches[ 1 ];

    if ( preg_match( '~"/ajax/timeline/sign_up_dialog[^"]+entity_id=([0-9]+)["&;]~u', $html, $matches ) )
       return (int)$matches[ 1 ];

    return null;
}

var_dump( getGroupID( 'primorye' ) );
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы