________________________________ From: J. Shirley <[email protected]> To: The elegant MVC web framework <[email protected]> Sent: Thu, October 15, 2009 9:44:13 PM Subject: Re: [Catalyst] Facebook canvas application in Catalyst On Thu, Oct 15, 2009 at 12:25 PM, Gunnar Strand <[email protected]> wrote: >Hi, > >>I am trying to write a Facebook canvas application in Catalyst using the >>WWW::Facebook::API plugin and I am tearing my hair trying to get it to work. > >>I have no problems with access to my canvas application from Facebook, but I >>am unable to use any of the $c->facebook interface methods to acquire user >>data, eg. friend list, event information etc. > >>I would be very grateful if anyone could post an example of, for instance, >>getting the currently logged in user's friends, or event information or any >>information at all via the $c->facebook interface. All I get is error when >>using the methods in the interface and the problem is definitely on this side >>of the keyboard. > >>KR, >>Gunnar > Hi Gunnar, I've been meaning to write a blog entry on this, since there are some points to be aware of. I've built my own model that creates a per-context instance and works quite well. It isn't on CPAN (yet) but I should probably release it. I would advise against using the Plugin, as it's not modifying the application behavior or dispatching so having it as a plugin is a bad fit. I posted my code in a gist: http://gist.github.com/211218 Keep in mind that you can't do differentiation on request type like GET/POST through the canvas. Make sure that you have the application added to your profile (check the app added, there is a chain mid-point to do this in the gist). Hope this helps, -J Hi J, Thank you for the quick reply! I have looked through the code and I cannot understand what the problem is for me. I have tried making this as simple as possible to eliminate any potential errors and still don't get it to work. I removed the plugin and I now have this code in the top index, some shamelessly copied from your page :-): sub index : Path : Args(0) { my ( $self, $c ) = @_; my $client = new WWW::Facebook::API( app_id => '174563349128', api_key => 'ce82845d86baa6d633efa5f00d83575a', desktop => 0, secret => '<secret id>', ); my $params = $c->req->params; my $fb_params = $client->canvas->get_fb_params( $c->req ); if ( $params->{'auth_token'} ) { $client->auth->get_session( $params->{'auth_token'} ); } if ( $fb_params->{session_key} ) { $client->session_key( $fb_params->{session_key} ); } use Data::Dumper; my $output = Dumper( $client->friends->get ); $c->response->body( '<pre>' . $output . '</pre>' ); And the output is still: $VAR1 = { 'error_msg' => 'Incorrect signature', 'request_args' => [ { 'value' => 'ce82845d86baa6d633efa5f00d83575a', 'key' => 'api_key' }, { 'value' => 'JSON', 'key' => 'format' }, { 'value' => 'facebook.friends.get', 'key' => 'method' }, { 'value' => '2.0POf_Dzs6W1VEJY2ZW1J5A__.86400.1255726800-100000257794276', 'key' => 'session_key' }, { 'value' => '1.0', 'key' => 'v' }, { 'value' => 'f5558065b76063dd63a8777eb5da8d7a', 'key' => 'sig' } ], 'error_code' => 104 }; I've rechecked the api_key and secret, and they are correct. I guess that that the source above really should product useful output? KR, Gunnar
_______________________________________________ List: [email protected] Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/[email protected]/ Dev site: http://dev.catalyst.perl.org/
