Как делают я использую WWW Perl:: Facebook:: API для публикации к новостному каналу пользователя?

Мы используем Подключение Facebook на нашем сайте в сочетании с WWW:: Facebook:: API модуль CPAN для публикации к нашему пользовательскому новостному каналу по требованию пользователя.

До сих пор мы смогли успешно обновить состояние пользователя с помощью следующего кода:

use WWW::Facebook::API;
my $facebook = WWW::Facebook::API->new(
    desktop => 0,
    api_key => $fb_api_key,
    secret => $fb_secret,
 session_key => $query->cookie($fb_api_key.'_session_key'),
 session_expires => $query->cookie($fb_api_key.'_expires'),
 session_uid => $query->cookie($fb_api_key.'_user')
);

my $response = $facebook->stream->publish(
 message => qq|Test status message|,
);

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

Согласно документации CPAN все, что нам придется сделать, обновить наш код к чему-то как следующее и передать вложения, и действие связывается соответственно, который, кажется, не работает:

my $response = $facebook->stream->publish(
 message => qq|Test status message|,
    attachment => $json,
    action_links => [@links],
);

Например, мы передаем вышеупомянутые аргументы следующим образом:

$json = qq|{ 'name': 'i\'m bursting with joy', 'href': ' http://bit.ly/187gO1', 'caption': '{*actor*} rated the lolcat 5 stars', 'description': 'a funny looking cat', 'properties': { 'category': { 'text': 'humor', 'href': 'http://bit.ly/KYbaN'}, 'ratings': '5 stars' }, 'media': [{ 'type': 'image', 'src': 'http://icanhascheezburger.files.wordpress.com/2009/03/funny-pictures-your-cat-is-bursting-with-joy1.jpg', 'href': 'http://bit.ly/187gO1'}] }|;
@links = ["{'text':'Link 1', 'href':'http://www.link1.com'}","{'text':'Link 2', 'href':'http://www.link2.com'}"];

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

Заранее спасибо за Вашу справку!

6
задан DSchultz 9 August 2011 в 21:49
поделиться

1 ответ

Я думаю, проблема в том, что ваша строка JSON может быть недействительной. Мне удалось заставить его работать, просто используя JSON :: Any для сериализации структуры данных Perl вместо создания строки JSON вручную. ( WWW :: Facebook :: API использует JSON :: Any под капотом; было бы неплохо, если бы он мог принимать структуру данных Perl вместо строки JSON. Я постараюсь отправить патч в эти выходные .)

use WWW::Facebook::API;
use JSON::Any;

my $j = JSON::Any->new;

my $fb = WWW::Facebook::API->new( 
    desktop => 0, 
    api_key => $api_key, 
    secret  => $secret, 
    session_key => $session, 
    session_expires => $expires, 
    session_uid => $fb_uid 
);

my $res = $fb->stream->publish( 
    message => 'Test message', 
    attachment => $j->objToJson( 
        { name => 'Foo bar baz', 
          href => 'http://www.google.com/', 
          description => "this is a thing" 
       } ), 
    action_links =>  $j->objToJson( 
      [ { text => 'action link text', 
          href => 'http://www.foobar.com/' 
      } ] ) 
);

Результат:

http://www.friedo.com/fb_attach.jpg

5
ответ дан 17 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: