我们在我们的网站上使用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文档,我们所要做的就是将我们的代码更新为类似下面的内容并相应地传递附件和操作链接,这似乎不起作用:
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