forked from adoy/PHP-OAuth2
-
Notifications
You must be signed in to change notification settings - Fork 1
malletjo/PHP-OAuth2
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
___________________________________ Light PHP wrapper for the OAuth 2.0 ___________________________________ AUTHOR & CONTACT ================ Charron Pierrick - pierrick@webstart.fr Berejeb Anis - anis.berejeb@gmail.com DOCUMENTATION & DOWNLOAD ======================== Latest version is available on github at : - https://github.com/adoy/PHP-OAuth2 Documentation can be found on : - https://github.com/adoy/PHP-OAuth2 LICENSE ======= This Code is released under the GNU LGPL Please do not change the header of the file(s). This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. How can I use it ? ================== // Change path require('Client.php'); require('GrantType/IGrantType.php'); require('GrantType/AuthorizationCode.php'); // beware: "const" can't be define in a function or if statement. const CLIENT_ID = 'your client id'; const CLIENT_SECRET = 'your client secret'; // Please be aware that you can not specify a redirector for the redirect_uri. // http://tools.ietf.org/html/draft-ietf-oauth-v2-22#section-10.15 const REDIRECT_URI = 'http://url/of/this.php'; const AUTHORIZATION_ENDPOINT = 'https://graph.facebook.com/oauth/authorize'; const TOKEN_ENDPOINT = 'https://graph.facebook.com/oauth/access_token'; $client = new OAuth2\Client(CLIENT_ID, CLIENT_SECRET); if (!isset($_REQUEST['code'])) { // state are recommanded in draft #23 $_SESSION['state'] = md5(uniqid(rand(), TRUE)); // CRSF protection $auth_url = $client->getAuthenticationUrl(AUTHORIZATION_ENDPOINT, array( 'redirect_uri' => REDIRECT_URI, 'state' => $_SESSION['state'] )); header('Location: ' . $auth_url); die(); } else { if ($_REQUEST['state'] == $_SESSION['state']) { $params = array( 'code' => $_GET['code'], 'client_id' => $client->getClientId(), 'redirect_uri' => REDIRECT_URI ); $response = $client->getAccessToken(TOKEN_ENDPOINT, 'authorization_code', $params); if (!isset($response['result']['error'])) { $info = $response['result']; // @todo $info should be saved for further usage (access_token) $client->setAccessToken($info['access_token']); // Recommendations (security): // Don't pass access_token in URL, use HTTP message headers instead // Not sure facebook support this. // $client->setAccessTokenType(OAuth2\Client::ACCESS_TOKEN_BEARER); $response = $client->fetch('https://graph.facebook.com/me'); var_dump($response, $response['result']); } else { die($response['result']['error']); } } else { die('Invalid state'); } } How can I add a new Grant Type ? ================================ Simply write a new class in the namespace OAuth2\GrantType. You can place the class file under GrantType. Here is an example : namespace OAuth2\GrantType; /** * MyCustomGrantType Grant Type */ class MyCustomGrantType implements IGrantType { /** * Defines the Grant Type * * @var string Defaults to 'my_custom_grant_type'. */ const GRANT_TYPE = 'my_custom_grant_type'; /** * Adds a specific Handling of the parameters * * @return array of Specific parameters to be sent. * @param mixed $parameters the parameters array (passed by reference) */ public function validateParameters(&$parameters) { if (!isset($parameters['first_mandatory_parameter'])) { throw new \Exception('The \'first_mandatory_parameter\' parameter must be defined for the Password grant type'); } elseif (!isset($parameters['second_mandatory_parameter'])) { throw new \Exception('The \'seconde_mandatory_parameter\' parameter must be defined for the Password grant type'); } } } call the OAuth client getAccessToken with the grantType you defined in the GRANT_TYPE constant, As following : $response = $client->getAccessToken(TOKEN_ENDPOINT, 'my_custom_grant_type', $params);
About
Light PHP wrapper for the OAuth 2.0 protocol (based on OAuth 2.0 Authorization Protocol draft-ietf-oauth-v2-15)
Resources
Stars
Watchers
Forks
Packages 0
No packages published
Languages
- PHP 100.0%