There’s a small error. I forgot to remove two lines from a previous version:
my $tmpdir = File::Temp->newdir(); my $dirname = $tmpdir->dirname; Stephan Am 05.02.2015 um 20:40 schrieb Witoszynskyj Stephan <step...@wito.org>: > Hi, > > I recently wrote on this list that I’m about to develop a script that posts > recently catalogued books to a Facebook page. Well, I found some time faster > then I thought, so here’s my simple script. I’ll run it using koha-foreach in > a cronjob. > > It does nothing fancy it just posts a list of recently catalogued books in > the form > > author: title > http://yourlibrary.org/bib/number > > in the time line of a Facebook page. I also tried uploading cover images, but > that didn’t work that well. > > Actually, the whole script is rather trivial. Figuring out how to get access > tokens for Facebook having the correct permissions took much longer then > developing the script. So, I tried to summarize the steps necessary to get > the tokens in the script’s comments. I hope they are helpful. > > Cheers, > Stephan > > #!/usr/bin/perl > > use utf8; > use Modern::Perl; > use C4::Context; > use Facebook::Graph; > > # This program posts a list of recently catalogued books to Facebook "Page". > # To be able to get the required access tokens you have to have administrator > # rights for the page. > # > # 1. Register as developer on Facebook's developer site: > # https://developers.facebook.com > # 2. Add an app on Facebook's developer site. Use "advanced Setup", choose a > # name and the category "Apps for pages". You'll get an app id and an app > # secret > # 3. get an user access token on > https://developers.facebook.com/tools/explorer > # by clicking "Get Access Token", set the "Extended Permissions" > manage_pages and publish_actions (make sure that you do that for your app and > not for Graph Explorer) > # 4. extend the expiration date of the access token by submitting the > following > # GET request: > # > /oauth/access_token?grant_type=fb_exchange_token&client_id={app-id}&client_secret={app-secret}&fb_exchange_token={short-lived-token} > > # You can this using wget: > # wget -O token "https://graph.facebook.com/wget -O token > "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id={app-id}&client_secret={app-secret}&fb_exchange_token={short-lived-token} > > # the file token will then contain your token > # 5. determine your user id e.g. by http://graph.facebook.com/yourusername > # 6. get the page access token by submitting the following GET request in > # Graph API explorer: > # /{user-id}/accounts > # You will get a data structure containing a number of key > # value pairs for each page you administrate. Get the page id and page > # access token for the page you want to post to > > > my $fb_access_token = „"; # your page access token goes here > > my $maxdays = 7; > my $base_url = 'http://yourlibrary.org'; > > > my $fb = Facebook::Graph->new; > $fb->access_token($fb_access_token); > > my $tmpdir = File::Temp->newdir(); > my $dirname = $tmpdir->dirname; > > my $dbh = C4::Context->dbh; > > my $query = "SELECT b.biblionumber,b.author,b.title,i.itemcallnumber FROM > biblio b, items i WHERE b.biblionumber = i.biblionumber AND > DATEDIFF(CURRENT_DATE,b.datecreated) < ? GROUP BY > b.biblionumber,b.author,b.title,i.itemcallnumber ORDER BY > i.itemcallnumber,b.author COLLATE utf8_unicode_ci"; > > my $sth = $dbh->prepare($query); > $sth->execute($maxdays); > > my @data; > my $message = "Recently catalogued books\n\n"; > my $rows_returned = 0; > > while (@data = $sth->fetchrow_array()) { > my $biblionumber = $data[0]; > my $author = $data[1]; > my $title = $data[2]; > my $itemcallnumber = $data[3]; > > if ($author) { > $message .= $author.": "; > } > $message .= $title."\n"; > $message .= $base_url.'/bib/.$biblionumber."\n\n"; > > $rows_returned++; > } > > if ($rows_returned) { > my $response = $fb->add_post > ->set_message($message) > ->publish; > > # print $response->as_string()."\n"; > # my $msg_id = $response->as_hashref()->{id}; > } > > _______________________________________________ > Koha mailing list http://koha-community.org > Koha@lists.katipo.co.nz > http://lists.katipo.co.nz/mailman/listinfo/koha _______________________________________________ Koha mailing list http://koha-community.org Koha@lists.katipo.co.nz http://lists.katipo.co.nz/mailman/listinfo/koha