Статьи

2 интересных вещи, которые вы можете сделать с помощью API Graph Facebook

В декабре 2011 года Facebook официально отказался от REST API и запустил Graph API для публичного использования. С тех пор все новые функции были добавлены в Graph API, и Facebook позволил пользователям выполнять множество новых задач, некоторые из которых мы обсудим сегодня. В этом посте мы будем делать много запросов к API Graph, получать ответы JSON и, таким образом, манипулировать ими, чтобы получить желаемые результаты.

Токен доступа

Большинству запросов к Graph API нужен токен доступа в качестве параметра. Маркер доступа уникален для комбинации вошедшего в систему пользователя или страницы и приложения Facebook, которое выполняет запрос.

Токен связан с приложением Facebook для обработки разрешений, предоставленных пользователю приложению. Это определяет ресурсы, доступные через токен доступа. Таким образом, токен обеспечивает временный и безопасный доступ к Facebook. Вы можете получить токен доступа в Graph Explorer . Токен может иметь или не иметь время экспирации в зависимости от того, являются ли они краткосрочными или долгосрочными токенами. После истечения срока действия краткосрочного токена необходимо повторно пройти аутентификацию пользователя и получить новый токен.

Конкурсы на страницах Facebook

В последнее время небольшие и перспективные организации эффективно использовали страницы Facebook для продвижения своего контента. Тем не менее, получение «лайков» и, следовательно, увеличение вашей досягаемости — медленный и устойчивый процесс Для этого многие обращаются к рекламе в Facebook. Однако многие другие выбирают более дешевую альтернативу — организуя конкурсы через свою страницу.

Обычный конкурс включает в себя размещение фотографии или параграфа на странице об опыте. Конкурс оценивается по количеству лайков на посту или фотографии. Также есть дополнительное условие для участия в конкурсе. Чтобы «лайк» был действительным, пользователю также должна понравиться страница. Facebook не имеет встроенной функции, которая говорит вам, сколько лайков является общим для вашего поста и страницы. Это затрудняет оценку конкурсов.

Непрограммисты чувствуют, что единственный способ судить о конкурсе — проверять количество лайков вручную. К счастью, API Graph помогает нам выполнять это действие без особых хлопот.

Хотя я собираюсь выполнить действие через Python, этот процесс остается тем же для других языков. Важной частью являются целевые URL, на которые мы отправляем запросы, и данные, которые мы получаем из полученного JSON.

Концептуально простым способом сделать это было бы получить список лайков в посте и список лайков на странице, а затем сравнить их. Тем не менее, на данный момент в Facebook нет функциональности, которая бы получала список лайков на странице . Мы будем использовать обратный процесс, чтобы проверить, нравится ли каждому из них пост.

Следующий вызов проверяет, нравится ли пользователю страница или нет. Подробная документация доступна здесь .

GET /{user-id}/likes/{page-id}

Если пользователю нравится страница, ответ JSON содержит datadata Мы используем следующую функцию, чтобы определить, нравится ли пользователю страница или нет.

 def user_likes_page(user_id, page_id):
    """
        Returns whether a user likes a page
    """
    url = 'https://graph.facebook.com/%d/likes/%d/' % (user_id, page_id)
    parameters = {'access_token': TOKEN}
    r = requests.get(url, params = parameters)
    result = json.loads(r.text)
    if result['data']:
        return True
    else:
        return False

Следующий шаг — получить список лайков для определенного поста и выяснить, нравится ли пользователям страница. Следующий звонок дает нам список лайков для поста, при условии, что у нас есть правильный доступ.

 GET /{post-id}/likes/

Объединяя эти две идеи, мы делаем следующую функцию, чтобы проверить, сколько лайков в посте также является общим для страницы.

 def get_common_likes(post_id, page_id):
    """
        Returns the number of likes common to a post and the page
    """
    count_likes = 0
    url = 'https://graph.facebook.com/%d/likes/' % post_id
    parameters = {'access_token': TOKEN}
    r = requests.get(url, params = parameters)
    result = json.loads(r.text)
    for like in result['data']:
        if user_likes_page(int(like['id']), page_id):
            count_likes += 1
            print 1
    return count_likes

Массовое реагирование на сообщения на вашей временной шкале

В твой день рождения, я уверен, ты получишь сотни (если не тысячи) постов. Отвечать на каждый из них утомительно! Многие люди поднимают статус, поблагодарив всех за их пожелания, в то время как другие предпочитают поблагодарить каждого лично. Давайте посмотрим, как мы можем выбрать личный вариант и сделать это в короткие сроки.

Вызов для получения канала для пользователей или страниц заключается в следующем.

 GET /{user-id}/feed

Если вы хотите получить сообщения на своей временной шкале, вы можете заменить {user-id} Чтобы манипулировать сотнями и тысячами сообщений, вы не сможете получить их на одной странице. Вам нужно будет сделать шаг вперед и проверить next

Функция, которая получает все сообщения на вашей временной шкале, заключается в следующем.

 def get_posts():
    """
        Returns the list of posts on my timeline
    """

    parameters = {'access_token': TOKEN}
    r = requests.get('https://graph.facebook.com/me/feed', params=parameters)
    result = json.loads(r.text)
    return result['data']

Следующим шагом является публикация комментариев на вашей временной шкале. Вызов, который используется для выполнения этого действия, выглядит следующим образом.

 POST /{object-id}/comments

Комментарий должен быть отправлен как messagePOST Итак, функция, которую мы используем для комментирования сообщений, заключается в следующем.

 def comment_on_posts(posts):
    """Comments on all posts"""
    for post in posts:
        url = 'https://graph.facebook.com/%s/comments' % post['post_id']
        message = 'Commenting through the Graph API'
        parameters = {'access_token': TOKEN, 'message': message}
        s = requests.post(url, data = parameters)

Скрипты, которые я использовал для обоих из них, можно найти на GitHub . Кроме того, вы можете сделать еще один шаг, сделав несколько запросов API одновременно.

Альтернативный подход

Акшит Хурана из Quora рассказывает о другом подходе к этому посредством использования языка запросов Facebook (FQL) . FQL — это SQL-подобный язык, который позволяет запрашивать данные, которые вы получаете через Graph API. Существует список таблиц , каждая из которых имеет собственный список столбцов, которые можно запрашивать, что помогает вам фильтровать ваши данные.

Вывод

Facebook много работает с момента запуска Graph API, и к нему часто добавляются новые функции. Если вы планируете работать с мобильными или веб-приложениями, связанными с Facebook, использование API Graph обязательно. Facebook также поддерживает обширную документацию , которая подробно объясняет функции и разнообразие использования Graph API.