Как получить доступ к Facebook Graph API в Parse Cloud Code?

Мне нужно получить друзей пользователя, который вошел в систему через Facebook в моем приложении Parse, внутри облачной функции. Как я могу этого добиться? Я пытался установить facebook-node-sdk (https://github.com/Thuzi/facebook-node-sdk/), но, несмотря на то, что я скопировал все зависимости в одну и ту же папку, он жалуется на невозможность загрузить пакет, когда я require его. Я также нашел этот вопрос: Как я могу получить имя пользователя из facebook в облачном коде? но ответ там не работает (FB не определено). Я могу выполнять необработанные вызовы REST к Graph API с моим токеном доступа, используя Parse.Cloud.httpRequest, но управление конечными точками, токеном доступа, параметрами и т. д. быстро становится беспорядочным. Каков предпочтительный способ доступа к Facebook Graph API из Parse Cloud Code?


person Can Poyrazoğlu    schedule 28.10.2014    source источник
comment
Вам повезло в этом?   -  person Rambatino    schedule 13.11.2014
comment
@Rambatino Я добавил свое решение в качестве ответа.   -  person Can Poyrazoğlu    schedule 14.11.2014


Ответы (1)


Я не мог использовать какие-либо библиотеки, поэтому в итоге я использовал простые HTTP-запросы REST. Например, я пытался получить имя пользователя, пол и идентификатор пользователя, я использовал этот код, вручную создав URL-адрес (где у меня была token переменная токена доступа пользователя:

Parse.Cloud.httpRequest({
  url: 'https://graph.facebook.com/v2.1/me?fields=id,gender,name&access_token=' + token,
  success: function(httpResponse) {
     var responseData = httpResponse.data;
     ...

где responseData теперь является объектом JSON с возвращаемыми данными. Это не самое лучшее, что можно сделать, но оно отлично работает для простых задач.

person Can Poyrazoğlu    schedule 13.11.2014
comment
Я буквально только что использовал этот метод через час после того, как прокомментировал! Отличная штука, тоже работает! Хотя пользователи скорее всего сейчас будут на v2.2 :). Кроме того, если кто-то озадачен authData, даже после включения мне все еще нужно было fetch(), чтобы пользователь действительно имел определенное поле authData: s - person Rambatino; 14.11.2014
comment
Это может быть немного поздно, но я пытался использовать это решение безрезультатно. Токен доступа не принят, и API графа возвращает ошибку, говорящую о том, что токен доступа не активен. Вы сталкивались с этой проблемой? - person BarakChamo; 13.01.2015
comment
:/где взять токен доступа в первую очередь. - person fatuhoku; 03.12.2015
comment
@fatuhoku попробуй user.get('authData')['facebook']['access_token']; - person Can Poyrazoğlu; 03.12.2015