Toon posts:

[PHP][API] /me/feed ontvangen via script

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Probleem: Graag zou ik via de PHP API van Facebook (https://github.com/facebook/php-sdk) de wall feed van een vooraf gedefinieerde user willen binnen halen. Het is wenselijk dat dit bijvoorbeeld via een crontab gaat lopen, zodat dit script een aantal maal per dag uitgevoerd kan worden.

Om dit te kunnen maken heb ik de documentatie op developers.facebook.com doorgelezen en met name de authorisatie die nodig is. Echter laat deze alleen voorbeelden zien hoe verschillende gebruiker via een webinterface (verwijzing naar een fb-popup met login) kunnen inloggen waarna een code (authcode) wordt teruggestuurd. Deze code wordt in een sessie opgeslagen en die dan dus uiteindelijk ook weer kan verlopen.

In mijn voorbeeld is het niet de bedoeling dat er continue ingelogd gaat worden maar dat het script in achtergrond rustig zijn informatie kan ophalen. Ik weet echter niet waar ik naar moet zoeken?

Kan iemand mij opweg helpen of waar ik meer informatie kan vinden?

Mvg,

Nick

Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

Facebook kan best lastig zijn om mee te beginnen, omdat ze verschillende benadermethodes hebben zoals FBML, twee API's onderhouden en bovendien alleen maar rotzooi geven als voorbeeldcode. Het is beter dat je eens rondneust voor wat open source code van mensen die er zelf een framework voor geschreven hebben dan dat je gaat modderen met de voorbeelden die Facebook je geeft, dan ga je namelijk geheid heel snel vastlopen.

iOS developer


Acties:
  • 0 Henk 'm!

  • gerbennn
  • Registratie: November 2003
  • Laatst online: 10-09 17:42
Verwijderd schreef op vrijdag 10 juni 2011 @ 15:31:

In mijn voorbeeld is het niet de bedoeling dat er continue ingelogd gaat worden maar dat het script in achtergrond rustig zijn informatie kan ophalen. Ik weet echter niet waar ik naar moet zoeken?
Voor deze situaties heeft facebook een aparte permissie die je instaat stelt om, ook buiten het gebruik van je applicatie door de gebruiker, API calls te doen. Zo zal de access token niet meer verlopen (of in ieder geval is 'ie 'long-lived', geen idee hoe lang het daadwerkelijk is.

offline_accessEnables your app to perform authorized requests on behalf of the user at any time. By default, most access tokens expire after a short time period to ensure applications only make requests on behalf of the user when the are actively using the application. This permission makes the access token returned by our OAuth endpoint long-lived.

bron

[ Voor 0% gewijzigd door gerbennn op 10-06-2011 15:58 . Reden: zinsopbouw ]

</signature>


Acties:
  • 0 Henk 'm!

  • Precision
  • Registratie: November 2006
  • Laatst online: 12-08 21:08
Als je iets vraagt aan facebook zal je zien dat alles eigenlijk via $facebook->api() verloopt. Die api verwacht wat je wil als een array. Als je berichten via een crontab wil uitvoeren heb je een access_token nodig.
PHP:
1
2
3
4
5
$request = array();
$request["access_token"] = "";
$request["query"] = "select uid, first_name, last_name, birthday, birthday_date from user where uid in (SELECT uid1 FROM friend WHERE uid2 = me()) and strlen(birthday_date) != 0";
$request["method"] = fql.query;
$facebook->api( $request );

Eigenlijk heb je 2 scripts nodig, een die toestemming vraagt aan de gebruiker en de access_token die hierbij wordt verkregen opslaat. En een script zoals hierboven die dan bestaat uit je cronjob.
Hier vraag je de permities aan.
PHP:
1
2
3
$perm = array('req_perms' => 'user_about_me,friends_birthday,user_birthday,user_groups,publish_stream,offline_access');
$loginUrl = $facebook->getLoginUrl($perm);
header("Location: ".$loginUrl);

Het stuk over die access_token staat nergens of slecht gedocumenteerd, dit heb ik door de code van facebook te lezen zelf gevonden. Ik hoop dat je hiermee wat tijd bespaart en je op weg help. De code komt uit een verjaardagsscript die ooit heb gemaakt omdat ik altijd vergat om te posten op mensen hun wall. Dit verloopt nu automatisch :+ ook krijg ik bij bepaalde mensen nu een sms en/of e-mail. Lang leve techniek en geen ruzies meer omdat ik verjaardagen vergeten was 8)

Crisis? Koop slim op Dagoffer - Op zoek naar een tof cadeau?