From 19c9b444888554459929757fd9900d5d0ad6e78d Mon Sep 17 00:00:00 2001 From: Bram Devries Date: Sun, 30 Aug 2015 21:37:27 +0200 Subject: [PATCH] Update name and readme --- CHANGELOG.MD | 3 +- README.md | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++ composer.json | 2 +- 3 files changed, 111 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.MD b/CHANGELOG.MD index 8e64c11..676005b 100644 --- a/CHANGELOG.MD +++ b/CHANGELOG.MD @@ -1,6 +1,7 @@ # CHANGELOG -## 1.0.0 +## 0.1.0 ### Added +- Basic slack resource owner - Initial commit diff --git a/README.md b/README.md index e69de29..fae183b 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,108 @@ +# Slack Provider for OAuth 2.0 Client +[![Latest Version](https://img.shields.io/github/release/bramdevries/oauth2-slack.svg?style=flat-square)](https://github.com/bramdevries/oauth2-slack/releases) +[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md) +[![Build Status](https://img.shields.io/travis/bramdevries/oauth2-slack/master.svg?style=flat-square)](https://travis-ci.org/bramdevries/oauth2-slack) +[![Coverage Status](https://img.shields.io/scrutinizer/coverage/g/bramdevries/oauth2-slack.svg?style=flat-square)](https://scrutinizer-ci.com/g/bramdevries/oauth2-slack/code-structure) +[![Quality Score](https://img.shields.io/scrutinizer/g/bramdevries/oauth2-slack.svg?style=flat-square)](https://scrutinizer-ci.com/g/bramdevries/oauth2-slack) +[![Total Downloads](https://img.shields.io/packagist/dt/league/oauth2-github.svg?style=flat-square)](https://packagist.org/packages/league/oauth2-github) + +This package provides Slack OAuth 2.0 support for the PHP League's [OAuth 2.0 Client](https://github.com/thephpleague/oauth2-client). + +## Installation + +To install, use composer: + +``` +composer require bramdevries/oauth2-slack +``` + +## Usage + +Usage is the same as The League's OAuth client, using `\League\OAuth2\Client\Provider\Slack` as the provider. + +### Authorization Code Flow + +```php +$provider = new League\OAuth2\Client\Provider\Slack([ + 'clientId' => '{github-client-id}', + 'clientSecret' => '{github-client-secret}', + 'redirectUri' => 'https://example.com/callback-url', +]); + +if (!isset($_GET['code'])) { + + // If we don't have an authorization code then get one + $authUrl = $provider->getAuthorizationUrl(); + $_SESSION['oauth2state'] = $provider->getState(); + header('Location: '.$authUrl); + exit; + +// Check given state against previously stored one to mitigate CSRF attack +} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) { + + unset($_SESSION['oauth2state']); + exit('Invalid state'); + +} else { + + // Try to get an access token (using the authorization code grant) + $token = $provider->getAccessToken('authorization_code', [ + 'code' => $_GET['code'] + ]); + + // Optional: Now you have a token you can look up a users profile data + try { + + // We got an access token, let's now get the user's details + $user = $provider->getResourceOwner($token); + + // Use these details to create a new profile + printf('Hello %s!', $user->getNickname()); + + } catch (Exception $e) { + + // Failed to get user details + exit('Oh dear...'); + } + + // Use this to interact with an API on the users behalf + echo $token->getToken(); +} +``` + +### Managing Scopes + +When creating your Slack authorization URL, you can specify the state and scopes your application may authorize. + +```php +$options = [ + 'state' => 'OPTIONAL_CUSTOM_CONFIGURED_STATE', + 'scope' => ['identify','read','post'] // array or string +]; + +$authorizationUrl = $provider->getAuthorizationUrl($options); +``` +If neither are defined, the provider will utilize internal defaults. + +At the time of authoring this documentation, the [following scopes are available](https://api.slack.com/docs/oauth). + +- identify +- read +- post +- client +- admin + +## Testing + +``` bash +$ ./vendor/bin/phpunit +``` +## Credits + +- [Bram Devries](https://github.com/bramdevries) +- [All Contributors](https://github.com/bramdevries/oauth2-slack/contributors) + + +## License + +The MIT License (MIT). Please see [License File](https://github.com/bramdevries/oauth2-slack/blob/master/LICENSE) for more information. diff --git a/composer.json b/composer.json index 3b0f850..7213832 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "bramdevries/oauth-slack", + "name": "bramdevries/oauth2-slack", "description": "Slack OAuth 2.0 Client Provider for The PHP League OAuth2-Client", "license": "MIT", "authors": [