PHP OAuth क्लाइंट: सोशल मीडिया और API प्रमाणीकरण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP OAuth क्लाइंट: प्रमाणीकरण एकीकरण के लिए संपूर्ण गाइड

OAuth (ओपन ऑथराइज़ेशन) एक खुला प्राधिकरण प्रोटोकॉल है जो तीसरे पक्ष को उपयोगकर्ता के लॉगिन और पासवर्ड के बिना उनके संसाधनों तक सीमित पहुंच प्रदान करने की अनुमति देता है। PHP की दुनिया में OAuth 2.0 को लागू करने के लिए कई लाइब्रेरी हैं, लेकिन सबसे लोकप्रिय और समर्थित में से एक League\OAuth2-Client (द PHP League) है। यह लाइब्रेरी Google, Facebook, GitHub, VK (VKontakte), Yandex और कई अन्य सेवाओं के माध्यम से लॉगिन को एकीकृत करने का एक लचीला और सुरक्षित तरीका प्रदान करती है।

इस लेख में, हम Google और VK के माध्यम से प्रमाणीकरण के उदाहरण के साथ PHP OAuth क्लाइंट की स्थापना, कॉन्फ़िगरेशन और उपयोग पर विस्तार से चर्चा करेंगे। आप सीखेंगे कि एक्सेस टोकन, रिफ्रेश टोकन और उपयोगकर्ता प्रोफ़ाइल डेटा कैसे प्राप्त करें।

Composer के माध्यम से OAuth क्लाइंट स्थापित करना

आरंभ करने के लिए, मुख्य लाइब्रेरी और प्रदाताओं (विशिष्ट सेवाओं के लिए एडेप्टर) को स्थापित करना आवश्यक है। टर्मिनल में निम्नलिखित चलाएँ:

composer require league/oauth2-client
composer require league/oauth2-google
composer require league/oauth2-vk

लाइब्रेरी PSR-7 (HTTP संदेश) और PSR-18 (HTTP क्लाइंट) का समर्थन करती है, इसलिए Guzzle या किसी अन्य संगत HTTP क्लाइंट को स्थापित करने की भी सिफारिश की जाती है:

composer require guzzlehttp/guzzle

OAuth 2.0 की मूल संरचना

PHP में OAuth 2.0 निम्नलिखित योजना के अनुसार काम करता है:

  • क्लाइंट आईडी और क्लाइंट सीक्रेट — सेवा (Google Cloud Console, VK Developers, आदि) में ऐप पंजीकृत करने पर प्राप्त होते हैं।
  • रीडायरेक्ट URI — आपकी वेबसाइट पर वह URL जहाँ प्राधिकरण के बाद सेवा उपयोगकर्ता को रीडायरेक्ट करेगी।
  • प्राधिकरण कोड — एक अस्थायी कोड जिसे एक्सेस टोकन के लिए बदला जाता है।
  • एक्सेस टोकन — उपयोगकर्ता के API तक पहुँचने की कुंजी।
  • रिफ्रेश टोकन — पुनः प्राधिकरण के बिना एक्सेस टोकन को नवीनीकृत करने की अनुमति देता है।

उदाहरण: Google के माध्यम से लॉगिन

Google के माध्यम से प्रमाणीकरण के लिए एक सरल हैंडलर बनाएँ। मान लिया जाता है कि आपके पास पहले से client_id और client_secret है।

चरण 1. उपयोगकर्ता को Google प्राधिकरण पृष्ठ पर रीडायरेक्ट करना

<?php
require 'vendor/autoload.php';

$provider = new \League\OAuth2\Client\Provider\Google([
    'clientId'     => 'आपका_CLIENT_ID',
    'clientSecret' => 'आपका_CLIENT_SECRET',
    'redirectUri'  => 'https://आपकी-साइट.com/callback.php',
]);

// प्राधिकरण के लिए URL जनरेट करें
$authUrl = $provider->getAuthorizationUrl([
    'scope' => ['email', 'profile'], // अनुरोधित अनुमतियाँ
]);

// CSRF से बचाव के लिए state को सत्र में सहेजें
$_SESSION['oauth2state'] = $provider->getState();

header('Location: ' . $authUrl);
exit;

चरण 2. कॉलबैक प्रोसेसिंग (callback.php)

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

$provider = new \League\OAuth2\Client\Provider\Google([
    'clientId'     => 'आपका_CLIENT_ID',
    'clientSecret' => 'आपका_CLIENT_SECRET',
    'redirectUri'  => 'https://आपकी-साइट.com/callback.php',
]);

// CSRF हमलों को रोकने के लिए state की जाँच करें
if (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {
    unset($_SESSION['oauth2state']);
    exit('अमान्य state');
}

try {
    // प्राधिकरण कोड को एक्सेस टोकन में बदलें
    $accessToken = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code']
    ]);

    // उपयोगकर्ता प्रोफ़ाइल डेटा प्राप्त करें
    $resourceOwner = $provider->getResourceOwner($accessToken);
    $user = $resourceOwner->toArray();

    echo "नमस्ते, " . htmlspecialchars($user['name']) . "!";
    echo "ईमेल: " . htmlspecialchars($user['email']);
    // आगे के अनुरोधों के लिए टोकन को डेटाबेस में सहेजें
} catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException                    

अनुशंसाएँ