Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Perl';s WWW::Facebook::API发布给用户';什么是新闻提要?_Perl_Facebook - Fatal编程技术网

如何使用Perl';s WWW::Facebook::API发布给用户';什么是新闻提要?

如何使用Perl';s WWW::Facebook::API发布给用户';什么是新闻提要?,perl,facebook,Perl,Facebook,当用户请求时,我们在网站上与CPAN模块一起使用Facebook Connect向用户发布新闻源 到目前为止,我们已经能够使用以下代码成功地更新用户的状态: use WWW::Facebook::API; my $facebook = WWW::Facebook::API->new( desktop => 0, api_key => $fb_api_key, secret => $fb_secret, session_key => $que

当用户请求时,我们在网站上与CPAN模块一起使用Facebook Connect向用户发布新闻源

到目前为止,我们已经能够使用以下代码成功地更新用户的状态:

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|,
);
然而,当我们尝试更新上面的代码以便发布包含Facebook API文档中指定的附件和操作链接的新闻提要故事时,我们尝试了大约100种不同的方法,但都没有成功

根据计划,我们所要做的就是将代码更新为如下内容,并适当地传递附件和操作链接,这似乎不起作用:

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'}"];
上述内容,以及我们尝试的任何其他表述似乎都有效。我希望其他一些perl开发人员也能做到这一点,并解释如何在perl中创建附件和动作链接变量,以便通过WWW::Facebook::API发布到Facebook新闻提要


提前感谢您的帮助

我认为问题在于您的JSON字符串可能无效。我只需要使用序列化Perl数据结构,而不是手动构建JSON字符串,就可以让它正常工作。(使用JSON::Any;如果它可以采用Perl数据结构而不是JSON字符串,那就太好了。我将在本周末提交一个补丁。)

结果是:


您是否尝试过联系此模块的开发人员/维护人员?我联系过,他实际提供的代码与@friedo在下面提供的几乎相同。在经历了许多令人沮丧的小时后,它现在似乎开始工作了。@friedo-工作得很有魅力。我同意,如果模块更灵活一点,或者文档更明确一点,说明需要如何传递信息,那就更好了。再次感谢!
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/' 
      } ] ) 
);