C++ के लिए OAuth क्लाइंट: liboauthcpp लाइब्रेरी
आधुनिक वेब डेवलपमेंट में, OAuth प्रोटोकॉल के माध्यम से बाहरी API के साथ एकीकरण एक वास्तविक मानक बन गया है। C++ डेवलपर्स के लिए, मानक लाइब्रेरी में अंतर्निहित समर्थन की कमी के कारण एक विश्वसनीय OAuth क्लाइंट बनाना एक कठिन कार्य हो सकता है। liboauthcpp C++ में एक हल्की, क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी है जो OAuth 1.0a और OAuth 2.0 के आंशिक समर्थन के लिए तैयार तंत्र प्रदान करती है। यह डेस्कटॉप एप्लिकेशन, सर्वर उपयोगिताओं और IoT उपकरणों में एम्बेड करने के लिए आदर्श है, जहाँ प्रदर्शन और न्यूनतम निर्भरताएँ महत्वपूर्ण हैं।
मुख्य विशेषताएँ
- OAuth 1.0a समर्थन — HMAC-SHA1 और RSA-SHA1 हस्ताक्षरों का पूर्ण कार्यान्वयन।
- OAuth 2.0 के बुनियादी तंत्र — प्राधिकरण कोड और क्लाइंट क्रेडेंशियल प्राप्त करना (रिफ्रेश टोकन के बिना)।
- न्यूनतम निर्भरताएँ — केवल C++11/14 कंपाइलर और OpenSSL (या वैकल्पिक क्रिप्टो प्रदाता) की आवश्यकता है।
- क्रॉस-प्लेटफ़ॉर्म — Linux, macOS, Windows (MinGW/MSVC) पर काम करता है।
- सरल API — सहज ज्ञान युक्त क्लासेस
OAuthClient,OAuthToken,OAuthRequest।
स्थापना
अनुशंसित स्थापना विधि vcpkg पैकेज सिस्टम के माध्यम से या स्रोत से निर्माण करना है:
# vcpkg के माध्यम सेvcpkg install liboauthcpp
# या GitHub से निर्माणgit clone https://github.com/lyokato/liboauthcpp.gitcd liboauthcppmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=/usr/localmake && sudo make installस्थापना के बाद, हेडर फ़ाइल शामिल करें और लाइब्रेरी से लिंक करें:
#include <oauthcpp/oauthcpp.hpp>// लिंकिंग: -loauthcpp -lssl -lcryptoउदाहरण: OAuth 1.0a (Twitter API)
एक क्लासिक परिदृश्य पर विचार करें — OAuth 1.0a का उपयोग करके Twitter API v1.1 के माध्यम से एक ट्वीट भेजना:
#include <iostream>#include <oauthcpp/oauthcpp.hpp>#include <curl/curl.h> // HTTP ट्रांसपोर्ट के लिए
int main() { // 1. क्रेडेंशियल का आरंभीकरण oauthcpp::OAuthClient client( "YOUR_CONSUMER_KEY", "YOUR_CONSUMER_SECRET", oauthcpp::OAuthClient::HttpMethod::POST );
// 2. उपयोगकर्ता टोकन सेट करना (पहले प्राप्त) oauthcpp::OAuthToken accessToken( "USER_ACCESS_TOKEN", "USER_TOKEN_SECRET" ); client.setToken(accessToken);
// 3. अनुरोध तैयार करना std::string url = "https://api.twitter.com/1.1/statuses/update.json"; oauthcpp::OAuthRequest request(url); request.addParameter("status", "C++ OAuth क्लाइंट से नमस्ते!");
// 4. अनुरोध पर हस्ताक्षर std::string signedUrl = client.sign(request);
// 5. libcurl के माध्यम से भेजना CURL* curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, signedUrl.c_str()); curl_easy_setopt(curl, CURLOPT_POST, 1L); // ... SSL सेटअप और प्रतिक्रिया प्रसंस्करण curl_easy_perform(curl); curl_easy_cleanup(curl);
return 0;}उदाहरण: OAuth 2.0 (Google API)
OAuth 2.0 के साथ काम करने के लिए, सरलीकृत तंत्र OAuth2Client का उपयोग करें (liboauthcpp का हिस्सा):
#include <iostream>#include <oauthcpp/oauth2.hpp>
int main() { oauthcpp::OAuth2Client client( "YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", "https://oauth2.googleapis.com/token" );
// प्राधिकरण कोड के माध्यम से टोकन प्राप्त करना std::string authCode = "AUTH_CODE_FROM_REDIRECT"; oauthcpp::OAuthToken token = client.getAccessToken(authCode, "https://your-app.com/callback");
std::cout << "एक्सेस टोकन: " << token.getAccessToken() << std::endl; std::cout << "समाप्ति समय: " << token.getExpiresIn() & पुस्तकालय में भी
जावा में कैशिंग: Redis, Ehcache, Caffeine, Hazelcast — अवलोकन और उदाहरण
Spatie PHP पैकेज: पूर्ण गाइड उदाहरणों के साथ
Firebase Android SDK Kotlin: पूर्ण गाइड उदाहरण सहित
Swift में अंतर्राष्ट्रीयकरण (i18n): NSLocalizedString और String Catalog