错误消息"(#12)对于版本v2.1及更高版本而言,不推荐使用fql"

时间:2016-08-05 07:25:19

标签: python facebook

我尝试使用以下代码中提到的python脚本获取facebook消息:

#!/usr/bin/python


import sys

from facepy import GraphAPI
from facepy import exceptions

#Acces token with expire time = 60days
LONG_LIVE_ACCESS_TOKEN = 'EAAZA7IlqBfvkBAKOjc7esSqY1VRJdsMkZC6QXM2mVlAwZAWjOiZA2ywalERBjLk4tzvZBu8JvoWvLRGcTtyZAGl482ueUI1o6MWjkK44y3TeoVKjYBayO5DSIP3Q1poVEa8hO8xZAXdScohEAgiFTtpvVQGk2nZB694ZD'

#Facebook app id and secret from http://developer.facebook.com/apps
APP_ID = '1824237337804537'
SECRET_KEY = 'ee788eb9bea6d36f5f40e52530248f55'

def user_id_to_username(userid):

    """ Function to convert facebook USERID to username. """

    if userid is not None:

        userid = '/{0}'.format(userid)
        try:
            return  graph.get(userid)['name']

        except (exceptions.FacebookError, exceptions.OAuthError) as e:
            print e.message
            sys.exit(0)

def get_message_author(message_list):
    return user_id_to_username(message_list['snippet_author'])


def get_message_author_id(message_list):
    return message_list['snippet_author']


def get_message_body(message_list):
    return message_list['snippet']


def get_recipients_list(message_list):
    author = get_message_author_id(message_list)
    temp = message_list['recipients']
    temp.remove(author)
    return ", ".join(map(user_id_to_username, temp))


def pretty_print(message_list):
    for message in message_list:
        print "from:     ", get_message_author(message)
        print "to:       ", get_recipients_list(message)
        print "Message:  ", get_message_body(message)
        print "-" * 140

graph = GraphAPI(LONG_LIVE_ACCESS_TOKEN)

#Output of the facebook query language(FQL)
#This FQL queries for message body, author, recipients for unread messages.

try:
    json_output = graph.fql('SELECT snippet, snippet_author, recipients FROM thread WHERE folder_id = 0  and unread != 0 Limit 4')
except exceptions.OAuthError as e:
    print e.message
    sys.exit(0)


message_list = json_output['data']

if message_list:
    pretty_print(message_list)
else:
    print "No New Messages"
    sys.exit(0)

执行此脚本时会显示错误消息:

  

(#12)对于版本v2.1及更高版本

,不推荐使用fql

1 个答案:

答案 0 :(得分:0)

FQL已被弃用,并且在2016年8月8日之前完全不受Facebook支持。Facebook Query Language (FQL) Reference

  

自2016年8月8日起,FQL将不再可用且不可用   查询。要迁移您的应用,请使用API​​升级工具查看   您可以改为使用图表API调用。