SDK & Bibliothèques

Accélérez votre intégration avec nos SDK officiels et les bibliothèques tierces compatibles.

SDK officiels en cours de développement

Nos SDK natifs sont en cours de développement. En attendant, l'API Octal Group étant entièrement compatible OAuth 2.0 / OpenID Connect, vous pouvez utiliser n'importe quelle bibliothèque OAuth 2.0 standard du marché. Les SDK officiels seront publiés sur npm et Packagist.

Bibliothèques compatibles recommandées

PHP

thephpleague/oauth2-client

Recommandé
// Installation
composer require league/oauth2-client

// Utilisation
use League\OAuth2\Client\Provider\GenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'YOUR_CLIENT_ID',
    'clientSecret'            => 'YOUR_CLIENT_SECRET',
    'redirectUri'             => 'https://votre-app.com/callback',
    'urlAuthorize'            => 'https://account.groupeoctal.com/oauth/authorize',
    'urlAccessToken'          => 'https://account.groupeoctal.com/oauth/token',
    'urlResourceOwnerDetails' => 'https://account.groupeoctal.com/oauth/userinfo',
]);
PHP 7.4+ OAuth 2.0 Packagist

Laravel Socialite

laravel/socialite avec un provider personnalisé

Recommandé
// Installation
composer require laravel/socialite socialiteproviders/manager

// Provider Octal Group (config/services.php)
'octal' => [
    'client_id'     => env('OCTAL_CLIENT_ID'),
    'client_secret' => env('OCTAL_CLIENT_SECRET'),
    'redirect'      => env('OCTAL_REDIRECT_URI'),
    'base_url'      => 'https://account.groupeoctal.com',
],

// Dans votre contrôleur
use Laravel\Socialite\Facades\Socialite;

Route::get('/auth/octal', fn() =>
    Socialite::driver('octal')->scopes(['openid', 'profile', 'email'])->redirect()
);

Route::get('/auth/octal/callback', function () {
    $octalUser = Socialite::driver('octal')->user();
    // $octalUser->getId(), ->getName(), ->getEmail(), ->getAvatar()
});

Node.js

openid-client (recommandé) ou passport-oauth2

Recommandé
// Installation
npm install openid-client

// Utilisation
const { Issuer } = require('openid-client');

const octalIssuer = await Issuer.discover('https://account.groupeoctal.com');
const client = new octalIssuer.Client({
  client_id:     process.env.OCTAL_CLIENT_ID,
  client_secret: process.env.OCTAL_CLIENT_SECRET,
  redirect_uris: [process.env.OCTAL_REDIRECT_URI],
  response_types: ['code'],
});

// Générer l'URL d'autorisation
const authUrl = client.authorizationUrl({
  scope: 'openid profile email',
  state: randomState,
  code_challenge: codeChallenge,
  code_challenge_method: 'S256',
});
Node 16+ OpenID Connect npm

Python

authlib ou requests-oauthlib

Compatible
# Installation
pip install authlib requests

# Utilisation avec Flask + Authlib
from authlib.integrations.flask_client import OAuth

oauth = OAuth(app)
octal = oauth.register(
    name='octal',
    client_id=os.environ['OCTAL_CLIENT_ID'],
    client_secret=os.environ['OCTAL_CLIENT_SECRET'],
    authorize_url='https://account.groupeoctal.com/oauth/authorize',
    access_token_url='https://account.groupeoctal.com/oauth/token',
    userinfo_endpoint='https://account.groupeoctal.com/oauth/userinfo',
    client_kwargs={'scope': 'openid profile email'},
)

@app.route('/auth/octal')
def login():
    redirect_uri = url_for('callback', _external=True)
    return octal.authorize_redirect(redirect_uri)

@app.route('/auth/callback')
def callback():
    token = octal.authorize_access_token()
    user  = octal.userinfo()
    session['user'] = user
    return redirect('/')

Django

social-auth-app-django

Compatible
# Installation
pip install social-auth-app-django

# settings.py
SOCIAL_AUTH_OCTAL_KEY    = 'YOUR_CLIENT_ID'
SOCIAL_AUTH_OCTAL_SECRET = 'YOUR_CLIENT_SECRET'
SOCIAL_AUTH_OCTAL_SCOPE  = ['openid', 'profile', 'email']

SOCIAL_AUTH_OCTAL_BASE_URL      = 'https://account.groupeoctal.com'
SOCIAL_AUTH_OCTAL_AUTHORIZATION_URL = 'https://account.groupeoctal.com/oauth/authorize'
SOCIAL_AUTH_OCTAL_ACCESS_TOKEN_URL  = 'https://account.groupeoctal.com/oauth/token'

Variables d'environnement de référence

# ============================
# Octal Group OAuth — .env
# ============================

# Identifiants de l'application (obtenus dans la console Octal)
OCTAL_CLIENT_ID=your_client_id_here
OCTAL_CLIENT_SECRET=your_client_secret_here

# URL de callback de votre application
OCTAL_REDIRECT_URI=https://votre-app.com/auth/octal/callback

# URLs Octal Group (ne pas modifier)
OCTAL_BASE_URL=https://account.groupeoctal.com
OCTAL_AUTH_URL=https://account.groupeoctal.com/oauth/authorize
OCTAL_TOKEN_URL=https://account.groupeoctal.com/oauth/token
OCTAL_USERINFO_URL=https://account.groupeoctal.com/oauth/userinfo

Checklist de mise en production

Votre application utilise HTTPS
Le Client Secret est dans les variables d'environnement (pas dans le code)
La validation du paramètre state est implémentée (protection CSRF)
L'échange code → token se fait côté serveur uniquement
Le PKCE est activé pour les apps SPA et mobile
Les tokens sont stockés dans des cookies HttpOnly + Secure (pas localStorage)
Le renouvellement automatique des tokens (refresh) est implémenté
La révocation de token est appelée lors de la déconnexion
Un système de retry avec backoff est implémenté pour les erreurs 429