me / feed с картинкой из другого домена - PullRequest
5 голосов
/ 27 августа 2011

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

Я использую Amazon S3 для хранения изображений. Я не знал заранее, что если бы я назвал свое ведро своим доменным именем с поддоменом, я мог бы связать этот путь, поэтому, пока я не переместлю все картинки, мне нужно будет связать их с доменом mybucket.s3.amazonaws.com. Когда я добавляю оттуда картинку с постом к стене, картинка не появляется. Если я поменяю картинку на сам сервер, картинка действительно появится. Кажется, что доменное имя картинки должно соответствовать моему приложению? Я посмотрел на Багзиллу и не увидел этого упоминания. Форум Facebook говорит, чтобы оставлять вопросы здесь.

Я использую C # Facebook SDK от CodePlex.

Мой код выглядит так (без обработки ошибок и проверки подлинности):

        var client = new FacebookClient(FACEBOOK_APP_ID, FACEBOOK_SECRET);
        client.AccessToken = facebook.AccessToken;
        var parameters = new Dictionary<string, object>();
    parameters.Add("name", name);
        parameters.Add("caption", title);
        parameters.Add("message", message);
        parameters.Add("link", link);
        parameters.Add("source", link);
        parameters.Add("picture", imageUrl);
        client.Post("me/feed", parameters);

Я проверил, что imageUrl действительно имеет правильное изображение, доменное имя просто не совпадает. Картинка на Amazon S3 имеет открытый доступ для чтения. Я могу просмотреть его из своего браузера, поэтому не думаю, что это проблема с разрешениями. Я пробовал несколько разных картинок с той же проблемой. Пока это работает, только когда картинка была на самом сервере.

Итак, мой вопрос: это проблема со мной, или Facebook блокирует изображения, которые не соответствуют доменному имени, указанному в приложении?

Ответы [ 3 ]

4 голосов
/ 27 августа 2011

Вы можете загрузить изображение с этого URL, а затем добавить его идентификатор объекта в сообщение.

См. : http://developers.facebook.com/blog/post/526/?ref=nf

Загрузка фотографийв API Graph через URL

Ранее в этом году мы выпустили поддержку для загрузки фотографий непосредственно через Graph API.Для этого необходимо отправить фотографию в виде поля в формате MIME.Теперь мы расширяем возможности загрузки фотографий, предоставляя возможность загружать фотографии, просто предоставляя URL-адрес изображения.Это упрощает управление фотографиями для ряда случаев использования:

  • Разработчики приложений, размещающие свои изображения на Amazon S3 или аналогичной службе
    , могут передавать URL-адрес S3 непосредственно в Facebook без необходимости
    загрузить файл на серверы приложений, чтобы загрузить его
    снова в Facebook.Это повышает производительность и снижает затраты для
    разработчиков.
  • Приложения, написанные на платформах, которые не имеют хорошей поддержки многоэтапной загрузки файлов, могут легче создавать новые фотографии.

загрузить фотографию через URL, просто введите HTTP POST для ALBUM_ID / photos с полем URL, установленным на URL фотографии, которую вы хотите загрузить.Вам нужно разрешение publish_stream для выполнения этой операции.Вы также можете включить необязательный параметр сообщения, чтобы установить подпись для фотографии.

4 голосов
/ 06 сентября 2011

Я тоже столкнулся с той же проблемой.Исходя из моих наблюдений, кажется, что Facebook не нравится, когда URL-адрес изображения имеет более одного субдомена.

Я попробовал 2 варианта URL ниже для того же изображения* s3.amazonaws.com / mybucket - отлично работает

:picture => 'http://mybucket.s3.amazonaws.com/footprints/15/coverimgs/medium.jpg'
OAuthException: (#100) picture URL is not properly formatted

:picture => 'http://s3.amazonaws.com/mybucket/footprints/15/coverimgs/medium.jpg'
{"id"=>"587472956_10150280873767957"}

Теперь мне нужно выяснить, как изменить структуру URL-адреса изображения при передаче его в API графа FB.

0 голосов
/ 27 августа 2011

Я бы зарегистрировал это как ошибку .Если это действительно так, в чем я сомневаюсь, вы можете создать перенаправление 301 на свой собственный домен для каждого изображения, которое перенаправляет на URL-адрес Amazon.

...