Разница между запросом FQL и доступом к объекту Graph API - PullRequest
4 голосов
/ 05 мая 2010

В чем разница между доступом к пользовательским данным с помощью API Graph Facebook (http://graph.facebook.com/btaylor)) и использованием Graph API для выполнения запроса FQL того же пользователя (https://api.facebook.com/method/fql.query?query=QUERY).

Кроме того, кто-нибудь знает, какой из них использует набор инструментов разработчика Facebook (для ASP.NET)?

Причина, по которой я спрашиваю, заключается в том, что я пытаюсь получить доступ к имениннику вошедшего в систему пользователя после того, как он начинает сеанс Facebook Connect на моем сайте, но когда я использую инструментарий, он не возвращает его. Однако, если я сделаю ручной вызов Graph API для этого пользовательского объекта, он вернет его. Возможно, что-то не так с моим звонком из инструментария. Я думаю, что мне может понадобиться включить ключ сеанса, но я не уверен, как его получить. Вот код, который я использую:

_connectSession = new ConnectSession(APPLICATION_KEY, SECRET_KEY);
        try
        {
            if (!_connectSession.IsConnected())
            {
                // Not authenticated, proceed as usual.
                statusResponse = "Please sign-in with Facebook.";
            }
            else
            {
                // Authenticated, create API instance
                _facebookAPI = new Api(_connectSession);

                // Load user
                user user = _facebookAPI.Users.GetInfo();

                statusResponse = user.ToString();

                ViewData["fb_user"] = user;

            }
        }
        catch (Exception ex)
        {
            //An error happened, so disconnect session
            _connectSession.Logout();
            statusResponse = "Please sign-in with Facebook.";
        }

Ответы [ 3 ]

8 голосов
/ 15 декабря 2011

Graph API и FQL похожи в том, что они оба обращаются к одним и тем же базовым объектам Facebook: узлам, которые в совокупности называются «социальным графом». Graph API - это простой, унифицированный и достаточно прямой способ доступа к этим объектам. Если вы точно знаете, что ищете, Graph API - простой способ получить его.

FQL, с другой стороны, является языком запросов (например, SQL). Он позволяет вам искать графовые объекты, которые было бы невозможно (или сложно) найти с помощью простого прямого API-интерфейса Graph.

Еще одна большая особенность, которая есть в FQL над Graph API, - это возможность пакетировать несколько запросов в один вызов (что может сэкономить лот времени в обходах для составных запросов).

В конечном счете, Graph API кажется более прямым представлением того, что происходит "под прикрытием" в социальном графе, поэтому я считаю, что проще использовать, когда смогу. Но если мой запрос к API Graph становится действительно длинным или непонятным (или в любое время, когда мне нужно сделать более одного связанного запроса социального графа), это означает, что пришло время переключиться на FQL.

0 голосов
/ 06 мая 2010

Похоже, это изменило его (да, еще раз). Поскольку вы используете Facebook Connect, вы можете запросить разрешения, чтобы предоставить вам необходимую информацию, например, день рождения пользователя, например:

<fb:login-button perms="email,user_birthday"></fb:login-button>

Дополнительная информация:

http://developers.facebook.com/docs/guides/web#login

0 голосов
/ 06 мая 2010

Кажется, причина, по которой я не смог получить день рождения и другую информацию, которую я искал, заключалась в том, что у меня не было полного списка всех расширенных разрешений, которые можно было запрашивать. Я наконец нашел список в http://developers.facebook.com/docs/authentication/permissions (который включал user_birthday).

Если у кого-то есть информация о вопросе FQL против графического объекта, мне все равно будет интересно. Хотя я думаю, что это в основном одно и то же.

...