Op deze pagina's vind je als het goed is alle informatie die je nodig hebt om de workshopdag van PFZ (11-02-2012) mee door te komen. Het enige wat ik hier niet verzorg is een livestream naar de elfstedentocht mocht deze vandaag plaats vinden :) Rechts op iedere pagina vind je een menuutje waarmee je snel tussen stukjes informatie en opdrachten kan wisselen.
OAuth (1a) Provider
Ik heb geen idee of we hier vandaag aan toe gaan komen, maar het lijkt me erg vervelend om twee uur voor het eind van de dag niets meer te doen hebben. Daarom hebben we hier nog één laatste opdracht om te maken. We hebben de dag tot nu besteed aan het consumen van een OAuth service. Het is wel interessant om eens te kijken naar de kant van de provider. Met andere woorden, hoe kan je je eigen API via OAuth toegankelijk maken?
Het schrijven van een OAuth provider is een workshop op zichzelf en daar hebben we vandaag geen tijd voor. Als alternatief heb ik een Provider geschreven die bijna af is. Een paar cruciale methodes ontbreken echter nog. De uitdaging is om deze methode's zo in te vullen zodat ze aan de OAuth 1 RFC voldoen.
De Provider is een laagje om PECL's OAuth Provider heen. Deze provider werkt met callback functies om binnenkomende requests te analyseren en valideren.
Opdracht 4
De PECL OAuth Provider verwacht dat bepaalde functies bepaalde constantes teruggeven, die zijn doorgaans per functie gedocumenteerd, je komt de juiste links vanzelf tegen. Kom je er niet uit, vraag het dan gerust.
- Download hier de provider - Klik!
- LET OP, ik heb hier nog een link naar github waar een volledig werkende versie te vinden is.
- Alle constantes (ook een aantal die niet als returnwaarde te gebruiken zijn) - http://nl3.php.net/manual/en/oauth.constants.php
Opdracht 4.1 - Timestamp en Nonce handler
De eerste opdracht is het vullen van de methode timestampNonceHandler. De methode geeft nu altijd accoord, maar zou eigenlijk een aantal checks moeten uitvoeren. Probeer aan de hand van de paragraaf van de RFC die hieronder gelinked is de bepalen wat de methode zou moeten doen en vul hem vervolgens in.
- RFC over Timestamps en nonces - http://tools.ietf.org/html/rfc5849#section-3.3
- PHP.net over deze handler - http://nl3.php.net/manual/en/oauthprovider.timestampnoncehandler.php
Opdracht 4.2 - Check request token
We gaan op dezelfde voet verder, maar nu voor de methode die controleert of het request token aan de voorwaarden voldoet. De bijbehorende informatie uit de RFC staat wederom hieronder. Deze paragraaf begint overigens met de plichten van de client, pas daarna wordt er uitgelegd wat de server zou moeten doen. Toch is het nuttig om even het hele stuk te lezen.
- RFC over request tokens - http://tools.ietf.org/html/rfc5849#section-2.3
- PHP.net over tokenhandlers - http://nl3.php.net/manual/en/oauthprovider.tokenhandler.php
Opdracht 4.3 - Check access token
Tenslotte moeten we nog even zorgen dat ons access token in orde is als er een API call gedaan wordt. Dit is nu zeker niet meer de moeilijkste, maar wel leuk om toch nog even voor elkaar te krijgen. We moeten hier nog minstens twee dingen controleren:
- Kunnen we op basis van het token een secret ophalen?
- Is de binnenkomende consumer key dezelfde als de consumer key waarvoor het token oorspronkelijk is uitgegeven?
PHP.net over tokenhandlers - http://nl3.php.net/manual/en/oauthprovider.tokenhandler.php