PHP, OAuth & Web Services By James Broad
May 24, 2015
PHP, OAuth & Web Services
By James Broad
You will learn
• How to authenticate a request using OAuth
• How to use a PHP framework - CodeIgniter
• How to retrieve web services using YQL
Technologies covered
• SVN
• rsync
• PHP
• CodeIgniter
Project : Search
• Search a number of services using their Web Service API’s
• Flickr
• Yahoo Search
• Wikipedia
YQLYahoo Query Language
YQL Consolehttp://developer.yahoo.com/yql/console/
SWEET!Now how do I make use of it?
Copy the generated URL and go
Nope. Soz, you need authentication
In the flavour of OAuth
What is OAuth?I will attempt to explain
The problem
• http://adactio.com/journal/1357
http://www.flickr.com/photos/borkazoid/3219646418/http://www.flickr.com/photos/fabricio/2354662901/
One Solution - OAuth
OAuth Flow
Demonstration
• Manual 3 Leg OAuth process
• http://carbonsilk.com/oauth/example/client.php
• Our example uses 2 Leg - no need for the user to leave the page but we only get access to public information.
Getting Started
• Getting our development environment set up
• Obtaining our application keys
• Covering the PHP code needed to run our application
Development Environment
• XAMPP - http://www.apachefriends.org/en/xampp.html
• CodeIgniter Framework
• OAuth Library
• CodeIgniter OAuth Classes
Installing CodeIgnitersvn checkout http://dev.ellislab.com/svn/CodeIgniter/trunk ~/
Sites/project_search
Configuring CodeIgniter
• Check it works http://localhost/project_search/
• Can we have pretty URLs? Please?
• change system/applications/config/config.php
• $config['index_page'] = "";
• Add .htaccess file
OAuth PHP Library
• svn co http://oauth.googlecode.com/svn/code/php ~/Sites/oauth/
• Copy OAuth.php to CodeIgniter Library - system/applications/libraries/
• Change line 369 of OAuth.php - Realm bug. Add realm as a parameter
YQL / OAuth ClassesI have been nice enough to pre-bake some classes for
you
YQL / OAuth Classes
• system/application/libraries/yql_lib.php
• Copy & Paste from http://gist.github.com/57536
• system/application/controllers/yql.php
• Copy & Paste from http://gist.github.com/57535
Obtaining Application Keys
• Go to https://developer.yahoo.com/dashboard/ and register a new OAuth application
• One I made earlier: https://developer.yahoo.com/dashboard/success.html?key=xxx
Configuring Our App
• Open system/application/libraries/yql_lib.php
• Add your OAuth key and secret
Upload
• We need to upload to the domain registered earlier for authentication
• rsync -r --progress ~/Sites/project_search/ [email protected]:~/public_html/project_search/
Review our framework code
We look behind what has been installed - The CodeIgniter Libraries and controllers
Live Code TimeAdding a new query - Scraping the Finance news top
stories and presenting them using a view and a controller
Thanks!twitter.com/kulorcarbonsilk.com