hughbertd/oauth2-unsplash

Unsplash OAuth 2.0 Client Provider for The PHP League OAuth2-Client

1.0.3 2017-12-14 13:08 UTC

This package is auto-updated.

Last update: 2024-12-21 04:12:49 UTC


README

Build Status

Provides Unsplash OAuth 2.0 support as an implementation of PHP League's OAuth 2.0 Client

Installation

To install, use composer:

composer require hughbertd/oauth2-unsplash

Usage

Usage is the same as The League's OAuth client, using \CrewLabs\OAuth2\Client\Provider\Unsplash as the provider.

Authorization Code Flow

<?php
require_once('./vendor/autoload.php');
session_start();

$provider = new \Unsplash\OAuth2\Client\Provider\Unsplash([
    'clientId' => '{clientId}',
    'clientSecret' => '{clientSecret}',
    'redirectUri' => 'http://example.com',
]);

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;
}

if (isset($_GET['code']) && !isset($_SESSION['token'])) {
    try {
        // Try to get an access token (using the authorization code grant)
        $token = $provider->getAccessToken('authorization_code', [
            'code' => $_GET['code']
        ]);

    } catch (Exception $e) {
        print($e->getMessage());
        exit;
    }

    // Use this to interact with an API on the users behalf
    $_SESSION['token'] = $token->getToken();
}

if (isset($_SESSION['token'])) {
    $user = $provider->getResourceOwner($_SESSION['token']);
    printf('Hello %s!', $user->getName());
    return;
}

Testing

$ ./vendor/bin/phpunit

Credits