Go (Golang) के लिए OAuth क्लाइंट: पूर्ण गाइड और लाइब्रेरी

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

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

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

Go (Golang) के लिए OAuth क्लाइंट: अपने ऐप में प्रमाणीकरण जोड़ें

आधुनिक वेब एप्लिकेशन बिना थर्ड-पार्टी प्रमाणीकरण के शायद ही चलते हैं। OAuth 2.0 एक मानक प्रोटोकॉल है जो उपयोगकर्ताओं को Google, GitHub, VK और अन्य सेवाओं के खातों के माध्यम से लॉगिन करने देता है। Go (Golang) इकोसिस्टम में OAuth के लिए एक शक्तिशाली लाइब्रेरी golang.org/x/oauth2 उपलब्ध है, जो रेडीमेड क्लाइंट और लचीले टूल्स प्रदान करती है।

इस लेख में हम विस्तार से जानेंगे कि Go के लिए OAuth क्लाइंट कैसे इंस्टॉल करें, कॉन्फ़िगर करें और उपयोग करें, साथ ही लोकप्रिय प्रदाताओं के लिए काम करने वाले उदाहरण भी देंगे।

OAuth 2.0 क्या है और इसकी आवश्यकता क्यों है?

OAuth 2.0 एक डेलिगेटेड एक्सेस प्रोटोकॉल है। आपके ऐप को उपयोगकर्ता के पासवर्ड स्टोर करने के बजाय एक अस्थायी टोकन मिलता है, जो विशिष्ट संसाधनों (जैसे उपयोगकर्ता प्रोफ़ाइल) तक पहुंच की अनुमति देता है। मुख्य लाभ:

  • सुरक्षा — पासवर्ड आपके ऐप में ट्रांसफर या स्टोर नहीं होते।
  • सुविधा — उपयोगकर्ता एक क्लिक से परिचित सेवाओं के माध्यम से लॉगिन करते हैं।
  • लचीलापन — आप केवल आवश्यक अनुमतियाँ (scope) मांग सकते हैं।

Go के लिए OAuth लाइब्रेरी इंस्टॉल करना

लाइब्रेरी golang.org/x/oauth2 Go का आधिकारिक एक्सटेंशन है। इसे स्टैंडर्ड कमांड से इंस्टॉल करें:

go get golang.org/x/oauth2
go get golang.org/x/oauth2/google   // Google के लिए
go get golang.org/x/oauth2/github   // GitHub के लिए (यदि उपलब्ध हो)

किसी विशिष्ट प्रदाता (जैसे google या facebook) के लिए अतिरिक्त पैकेज की आवश्यकता हो सकती है। अधिकांश सेवाओं के लिए आपको अपना एंडपॉइंट लिखना होगा, लेकिन बेसिक स्ट्रक्चर समान है।

OAuth क्लाइंट का बेसिक सेटअप

शुरू करने के लिए, प्रदाता (Google, GitHub आदि) पर अपना ऐप रजिस्टर करें और ClientID और ClientSecret प्राप्त करें। फिर OAuth2 कॉन्फ़िगरेशन बनाएं:

package main

import (
    "context"
    "fmt"
    "golang.org/x/oauth2"
)

func main() {
    // Google के लिए OAuth2 कॉन्फ़िगरेशन
    conf := &oauth2.Config{
        ClientID:     "आपका_CLIENT_ID",
        ClientSecret: "आपका_CLIENT_SECRET",
        RedirectURL:  "http://localhost:8080/callback",
        Scopes:       []string{"https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile"},
        Endpoint: oauth2.Endpoint{
            AuthURL:  "https://accounts.google.com/o/oauth2/auth",
            TokenURL: "https://oauth2.googleapis.com/token",
        },
    }

    // उपयोगकर्ता को रीडायरेक्ट करने के लिए URL जनरेट करें
    url := conf.AuthCodeURL("state", oauth2.AccessTypeOffline)
    fmt.Printf("प्रमाणीकरण के लिए इस लिंक पर जाएं: %v\n", url)
}

state पैरामीटर पर ध्यान दें — यह CSRF हमलों से बचाव के लिए है। वास्तविक ऐप में इसे रैंडमली जनरेट करें और सत्र में स्टोर करें।

कॉलबैक हैंडल करना और टोकन प्राप्त करना

उपयोगकर्ता के प्रमाणीकरण के बाद, प्रदाता उन्हें RedirectURL पर code पैरामीटर के साथ रीडायरेक्ट करता है। यह कोड एक्सेस टोकन में बदला जाता है। Go में हैंडलर का उदाहरण:

package main

import (
    "context"
    "fmt"
    "net/http"
    "golang.org/x/oauth2"
)

var oauthConfig *oauth2.Config

func callbackHandler(w http.ResponseWriter, r *http.Request) {
    code := r.URL.Query().Get("code")
    if code == "" {
        http.Error(w, "कोड प्राप्त नहीं हुआ", http.StatusBadRequest)
        return
    }

    // कोड को टोकन में बदलें
    token, err := oauthConfig.Exchange(context.Background(), code)
    if err != nil {
        http.Error(w, "टोकन बदलने में त्रुटि: "+err.Error(), http.StatusInternalServerError)
        return
    }

    fmt.Fprintf(w, "एक्सेस टोकन: %s\n", token.AccessToken)
}

प्राप्त

अनुशंसाएँ