WedX - журнал о программировании и компьютерных науках

Как загрузить фото на стену пользователя с помощью Facebook Javascript API (2014)

Прежде всего, я знаю, что есть много вопросов и ответов по одной и той же теме, но ни один из них мне не подходит... Возможно, это связано с тем, что многие из них относятся к 2011 или 2012 году, а FB API мог измениться. и методы могут быть устаревшими... Позвольте мне кратко резюмировать мою проблему:

Что я хочу сделать?

Загрузите фотографию PNG или JPEG, хранящуюся на сервере, на стену пользователя.

Как я хочу это сделать?

Используя Javascript API Facebook, предположительно, вызвав «FB.api ()». Я немного имел дело с "FB.ui()" и мне удалось успешно загрузить некоторые вещи, но я не знаю, можно ли загрузить простую фотографию на стену пользователя с помощью "ui() метод (надеюсь!).

Что я сейчас делаю?

Вот код, который я запускаю сейчас:

CocoonJS.Social.Facebook.api('/me/photos', 'post', 
    {
        message:'Luke: I am your Guinness',
        access_token: game.data.access_token, 
        url:'https://www.theagencyonline.co.uk/wp-content/uploads/2013/09/Darth-Vader-Guinness.gif'        
    }, function(response){
            if (!response || response.error) {
                alert('Error occured');
            } else {
                alert('Post ID: ' + response.id);
            }
});

Что я получаю?

Странно, после вызова этой функции выскакивает оповещение с "Идентификатором сообщения" с большим числом (я думаю, фактический идентификатор сообщения). Однако в стене ничего не публикуется. Я использую свою учетную запись, чтобы протестировать ее, и я не могу увидеть опубликованную запись.

Беспорядок, который может быть связан с проблемой (или не связан с ней):

  • О пользовательском «токене доступа» ходят легенды: кто-то считает его ключевым параметром, кто-то его даже не использует.

  • Некоторые считают, что загрузить фото можно не через «/me/photos», а через «/{user_id}/photos».

  • Мое приложение FB все еще находится в режиме песочницы (не опубликовано).

И, наконец, простой вопрос, который мог бы решить все это... Я мог публиковать вещи через "FB.ui()" вместо "FB.api()", но я не могу найти способ публиковать фотографии через "ui()": знаете ли вы, возможно ли это? Если да, то как это можно сделать?

Заранее спасибо за ваше время и усилия! :)


Ответы:


1

Документы Facebook по адресу https://developers.facebook.com/docs/graph-api/reference/v2.0/user/photos/#publish укажите, что вы должны использовать закодированные фигурные скобки для переноса содержимого вашего url параметра:

url=%7Bimage-url%7D

Странно, что вам вернули photo_id. Что произойдет, если вы запросите этот photo_id?

Кроме того, проверьте, каковы параметры публикации по умолчанию для вашего приложения. Цитата из FB для поля privacy:

Если не указан, по умолчанию используется уровень конфиденциальности, предоставленный приложению в диалоговом окне входа. Это поле нельзя использовать для установки более открытой настройки конфиденциальности, чем предоставленная.

22.05.2014
  • Привет Тоби! Добавление этих закодированных скобок к URL-адресу возвращает ошибку, даже не идентификатор сообщения... Ошибка, однако, всегда не определена, поэтому я понятия не имею, что может произойти... Я просто изменил свой URL-адрес на URL-адрес: '% 7Bhttps://www.theagencyonline.co.uk/wp-content/uploads/2013/09/Darth-Vader-Guinness.gif%7D', но ничего... 22.05.2014
  • Хммм, хорошо... А как насчет поля privacy? 22.05.2014
  • Я новичок в FB API и не знаю точно, как получить поле privacy... Я вызвал FB.api(response.id, 'get', function(response2){ alert('Post: '+response2.id+", "+response2.privacy); } }); с возвращенным post_id (то есть response.id) и, хотя оповещение правильно извлекает ожидаемый идентификатор, response2.privacy возвращает undefined... Как я мог это проверить? 22.05.2014
  • Просто возьмите post_id и поместите его в Graph Explorer: developers.facebook.com/tools/explorer Я обновил свой ответ еще одной подсказкой. 22.05.2014
  • Я пытался вызвать v2.0/10203987693281115 из Graph Explorer и получил GraphMethodException Unsupported get request... Означает ли это, что сообщение на самом деле не сделано (поэтому он не может его получить), или я делаю что-то не так? Что касается конфигурации конфиденциальности моего приложения, в разделе «Утвержденные» на странице приложения «Статус и обзор» отображаются электронная почта, общедоступный профиль и user_friends... Я думаю, что мне нужно опубликовать второй, поэтому, похоже, он уже предоставлен... 22.05.2014
  • Вам необходимо разрешение publish_actions, чтобы публиковать фотографии для Пользователя, и user_photos, чтобы иметь возможность запрашивать их. Это работает только для вашего пользователя, если он является администратором приложения без явных разрешений. 22.05.2014
  • Я пытаюсь войти в систему с расширенными разрешениями, но я не могу получить параметр grantScopes, чтобы увидеть, действительно ли пользователь их предоставил (я получаю неопределенное значение, которое, кажется, является трендовым значением в FB API)... Я Я звоню CocoonJS.Social.Facebook.login(function(response) { console.log("GRANTED: "+response.authResponse.grantedScopes); }, { scope: 'publish_actions', return_scopes: true });, что кажется правильным способом... Есть идеи, что я делаю не так? 22.05.2014
  • Я попытался опубликовать фотографию через Graph Explorer, и она была хорошо опубликована! Однако при попытке из моего приложения это не работает (хотя оно возвращает идентификатор)... Я думаю, что на самом деле запрашиваю разрешение publish_actions (приложение запросило их у меня), поэтому кажется, что я' я уже делаю все, что нужно... 22.05.2014
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]