OAuth-Client für C++: Die Bibliothek liboauth für die Autorisierung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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 install


Nach der Installation binden Sie die Header-Datei ein und linken Sie die Bibliothek:

#include <oauthcpp/oauthcpp.hpp>// Linken: -loauthcpp -lssl -lcrypto


Beispiel: 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() &

Empfehlungen