微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Perl的WWW :: Facebook :: API发布到用户的新闻源?

我们在我们的网站上使用Facebook Connect与 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|,);

但是,当我们尝试更新上面的代码,以便我们可以发布包含Stream.Publish Facebook api文档中指定的附件和操作链接的新闻源故事时,我们尝试了大约100种不同的方法,但没有任何成功.

根据CPAN documentation,我们所要做的就是将我们的代码更新为以下内容并传递附件和附件.适当的行动链接似乎不起作用:

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中适当地创建附件和action_links变量,以便通过WWW :: Facebook :: API发布到Facebook新闻源.

在此先感谢您的帮助!

解决方法

我认为问题是您的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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐