• Stars
    star
    65
  • Rank 457,304 (Top 10 %)
  • Language
    PHP
  • License
    MIT License
  • Created about 9 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Microsoft OAuth 2.0 support for the PHP League's OAuth 2.0 Client

Microsoft Provider for OAuth 2.0 Client

Latest Version Build Status Coverage Status Quality Score Total Downloads Software License

This package provides Microsoft OAuth 2.0 support for the PHP League's OAuth 2.0 Client.

Installation

To install, use composer:

composer require stevenmaguire/oauth2-microsoft

Usage

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

Authorization Code Flow

$provider = new Stevenmaguire\OAuth2\Client\Provider\Microsoft([
    // Required
    'clientId'                  => '{microsoft-client-id}',
    'clientSecret'              => '{microsoft-client-secret}',
    'redirectUri'               => 'https://example.com/callback-url',
    // Optional
    'urlAuthorize'              => 'https://login.windows.net/common/oauth2/authorize',
    'urlAccessToken'            => 'https://login.windows.net/common/oauth2/token',
    'urlResourceOwnerDetails'   => 'https://outlook.office.com/api/v1.0/me'
]);

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->getFirstname());

    } 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 and State

When creating your Microsoft authorization URL, you can specify the state and scopes your application may authorize.

$options = [
    'state' => 'OPTIONAL_CUSTOM_CONFIGURED_STATE',
    'scope' => ['wl.basic', 'wl.signin'] // 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.

Core
  • wl.basic
  • wl.offline_access
  • wl.signin
Extended
  • wl.birthday
  • wl.calendars
  • wl.calendars_update
  • wl.contacts_birthday
  • wl.contacts_create
  • wl.contacts_calendars
  • wl.contacts_photos
  • wl.contacts_skydrive
  • wl.emails
  • wl.events_create
  • wl.imap
  • wl.phone_numbers
  • wl.photos
  • wl.postal_addresses
  • wl.skydrive
  • wl.skydrive_update
  • wl.work_profile
  • office.onenote_create

Testing

$ ./vendor/bin/phpunit

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.

More Repositories

1

oauth2-keycloak

Keycloak Provider for OAuth 2.0 Client
PHP
191
star
2

trello-php

A php client for consuming the Trello API
PHP
82
star
3

uber-php

A php client for consuming Uber API
PHP
63
star
4

yelp-php

A php client for consuming Yelp API
PHP
56
star
5

laravel-middleware-csp

Provides support for enforcing Content Security Policy with headers in Laravel responses.
PHP
40
star
6

oauth2-salesforce

Salesforce Provider for the OAuth 2.0 Client
PHP
30
star
7

zurb-foundation-laravel

Build HTML form elements for Foundation inside Laravel 4
PHP
19
star
8

oauth2-bitbucket

Bitbucket OAuth 2.0 support for the PHP League's OAuth 2.0 Client
PHP
19
star
9

laravel-cache

Seamlessly adding caching to Laravel service objects
PHP
17
star
10

oauth2-dropbox

Dropbox Provider for the OAuth 2.0 Client
PHP
16
star
11

product-microservice-example

sample project to supplement training curriculum
PHP
16
star
12

oauth2-uber

Uber OAuth 2.0 support for the PHP League's OAuth 2.0 Client
PHP
12
star
13

oauth2-paypal

PayPal Provider for OAuth 2.0 Client
PHP
8
star
14

middleware-csp-php

Provides support for enforcing Content Security Policy with headers in PSR 7 responses.
PHP
7
star
15

ifttt-demo

Demo project for Events in Laravel 5
PHP
6
star
16

toran

PHP
6
star
17

oauth2-zendesk

Zendesk Provider for the OAuth 2.0 Client
PHP
5
star
18

oauth2-box

Box OAuth 2.0 support for the PHP League's OAuth 2.0 Client
PHP
4
star
19

laravel-uuid-model

Create non-incrementing Laravel models whose primary key is a UUID
PHP
4
star
20

oauth2-yelp

Yelp Provider for the OAuth 2.0 Client
PHP
2
star
21

encoding-php

A php client for consuming Encoding.com API
PHP
2
star
22

oauth2-nest

Nest Provider for the OAuth 2.0 Client
PHP
2
star
23

oauth2-eventbrite

Eventbrite OAuth 2.0 support for the PHP League's OAuth 2.0 Client
PHP
2
star
24

dotfiles

i use computers.
Vim Script
1
star
25

elvish-ipsum

Add Elvish words, sentences, and paragraphs to your Laravel project
PHP
1
star
26

bydreco-service

PHP
1
star
27

oauth2-basecamp

Basecamp Provider for the OAuth 2.0 Client
PHP
1
star
28

oauth2-wecounsel

WeCounsel OAuth 2.0 support for the PHP League's OAuth 2.0 Client
PHP
1
star
29

elvish-me

Primitive Laravel application to generate and define elvish language
PHP
1
star