OAuth-Client für C++: Die Bibliothek liboauthcpp
In der modernen Webentwicklung ist die Integration mit externen APIs über das OAuth-Protokoll zum De-facto-Standard geworden. Für C++-Entwickler kann die Erstellung eines zuverlässigen OAuth-Clients aufgrund fehlender integrierter Unterstützung in der Standardbibliothek eine nicht triviale Aufgabe sein. liboauthcpp ist eine leichtgewichtige, plattformübergreifende C++-Bibliothek, die fertige Mechanismen für die Arbeit mit OAuth 1.0a und teilweiser Unterstützung für OAuth 2.0 bietet. Sie eignet sich ideal für die Einbettung in Desktop-Anwendungen, Server-Dienstprogramme und IoT-Geräte, bei denen Leistung und minimale Abhängigkeiten entscheidend sind.
Hauptfunktionen
- Unterstützung für OAuth 1.0a — vollständige Implementierung von HMAC-SHA1- und RSA-SHA1-Signaturen.
- Basis-Mechanismen für OAuth 2.0 — Abruf von Authorization Code und Client Credentials (ohne Refresh Token).
- Minimale Abhängigkeiten — es wird nur ein C++11/14-Compiler und OpenSSL (oder ein alternativer Krypto-Anbieter) benötigt.
- Plattformunabhängigkeit — funktioniert unter Linux, macOS, Windows (MinGW/MSVC).
- Einfache API — intuitiv verständliche Klassen
OAuthClient,OAuthToken,OAuthRequest.
Installation
Die empfohlene Installationsmethode ist über das Paketsystem vcpkg oder die Kompilierung aus dem Quellcode:
# Über vcpkgvcpkg install liboauthcpp
# Oder Kompilierung von GitHubgit clone https://github.com/lyokato/liboauthcpp.gitcd liboauthcppmkdir build && cd buildcmake .. -DCMAKE_INSTALL_PREFIX=/usr/localmake && sudo make installNach der Installation binden Sie die Header-Datei ein und linken Sie die Bibliothek:
#include <oauthcpp/oauthcpp.hpp>// Linken: -loauthcpp -lssl -lcryptoBeispiel: OAuth 1.0a (Twitter API)
Betrachten wir ein klassisches Szenario – das Senden eines Tweets über die Twitter API v1.1 mit OAuth 1.0a:
#include <iostream>#include <oauthcpp/oauthcpp.hpp>#include <curl/curl.h> // Für HTTP-Transport
int main() { // 1. Initialisierung der Anmeldedaten oauthcpp::OAuthClient client( "YOUR_CONSUMER_KEY", "YOUR_CONSUMER_SECRET", oauthcpp::OAuthClient::HttpMethod::POST );
// 2. Setzen der Benutzer-Token (zuvor abgerufen) oauthcpp::OAuthToken accessToken( "USER_ACCESS_TOKEN", "USER_TOKEN_SECRET" ); client.setToken(accessToken);
// 3. Erstellen der Anfrage std::string url = "https://api.twitter.com/1.1/statuses/update.json"; oauthcpp::OAuthRequest request(url); request.addParameter("status", "Hallo vom C++ OAuth-Client!");
// 4. Signieren der Anfrage std::string signedUrl = client.sign(request);
// 5. Senden über libcurl CURL* curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, signedUrl.c_str()); curl_easy_setopt(curl, CURLOPT_POST, 1L); // ... SSL-Konfiguration und Antwortverarbeitung curl_easy_perform(curl); curl_easy_cleanup(curl);
return 0;}Beispiel: OAuth 2.0 (Google API)
Für die Arbeit mit OAuth 2.0 verwenden Sie den vereinfachten Mechanismus OAuth2Client (im Lieferumfang von liboauthcpp enthalten):
#include <iostream>#include <oauthcpp/oauth2.hpp>
int main() { oauthcpp::OAuth2Client client( "YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", "https://oauth2.googleapis.com/token" );
// Abruf des Tokens über Authorization Code std::string authCode = "AUTH_CODE_FROM_REDIRECT"; oauthcpp::OAuthToken token = client.getAccessToken(authCode, "https://your-app.com/callback");
std::cout << "Access Token: " << token.getAccessToken() << std::endl; std::cout << "Expires in: " << token.getExpiresIn() & Auch in der Bibliothek
Aufgabenwarteschlangen in Java: Von ThreadPoolExecutor bis Disruptor
Arbeiten mit Daten in Kotlin: Bibliotheken und Werkzeuge für die Entwicklung
Serilog für C# (.NET): Vollständige Anleitung mit Beispielen
Generierung von PDF-Berichten in Swift für iOS und macOS mit PDFKit und Core Graphics
phpdotenv