Contao-Camp 2024
Ergebnis 1 bis 7 von 7

Thema: Json abrufen (GET) mit Bearer Token

  1. #1
    Contao-Nutzer
    Registriert seit
    18.08.2011.
    Beiträge
    68

    Standard Json abrufen (GET) mit Bearer Token

    Hi,
    habe laut Anleitung (https://community.contao.org/de/show...l=1#post435625) das Modul mit Template angelegt.
    Jetzt ist aber die grosse Frage wie ich den Token einbaue bzw. verwende und diesen auch sicher benutze.

    Template Datei:
    PHP-Code:
    <?php
    $sem_data 
    json_decode(file_get_contents('https://.../api/v1/.../seminars/')); 
    var_dump($sem_data);
    ?>
    Danke

  2. #2
    Contao-Nutzer
    Registriert seit
    03.06.2019.
    Beiträge
    159
    Partner-ID
    11715
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von BlackP Beitrag anzeigen
    Jetzt ist aber die grosse Frage wie ich den Token einbaue bzw. verwende und diesen auch sicher benutze
    Was genau meinst du mit "Token"?
    Alle Daten, welche du in $sem_data stehen hast, kannst du nun innerhalb dieses Templates ausgeben und das Modul an gewünschter Stelle platzieren.

    ---

    Inzwischen gibt es auch eine Erweiterung (Contao 4), welche Daten aus verschiedenen Quellen über Insert-Tags bereitstellt:
    https://extensions.contao.org/?q=res...rce-insert-tag

    Ein Beispiel zur Anwendung findest du in der README:
    https://github.com/oveleon/contao-resource-insert-tag

    Hier sei jedoch zu erwähnen, dass die Quellen noch nicht gecached werden(!).

    LG Doi

  3. #3
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.942

    Standard

    Ich gehe davon aus, Du willst eine externe API abrufen. Mit file_get_contents() kannst Du keine Header (und darin Dein Token) mitgeben. Du musst curl (https://www.php.net/manual/de/book.curl.php) oder eine PHP-Bibliothek wie den Symfony HTTP-Client (https://symfony.com/doc/current/http_client.html) verwenden um das zu machen.

    Edit: stimmt wohl nicht ganz. Bei file_get_contents() kannst Du das wohl über den $context amchen https://www.php.net/manual/de/functi...ext-create.php
    Geändert von fiedsch (14.01.2021 um 13:13 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  4. #4
    Contao-Nutzer
    Registriert seit
    18.08.2011.
    Beiträge
    68

    Standard

    Sorry, hab mich da eventuel etwas zu dünn ausgedrückt

    Ich habe zwei URLs mit jeweils einem Bearer Tocken bekommen.
    Mit der einen URL und dem Token authentifiziere ich mich an dem externen Server und bekommen dann die Json mit den Daten (Seminare).

    Mit der zweiten Url kann ich dann bei den jeweiligen Seminar mich anmelden. Heisst ein Formular wird ausgefüllt und dann die Daten an die Url geschickt.
    Beides als Json und mit dem Authentifizierungs Tocken.

  5. #5
    Contao-Nutzer
    Registriert seit
    18.08.2011.
    Beiträge
    68

    Standard

    Hi,
    hier mal der erste funkltionierende Script zum abrufen der Daten:

    PHP-Code:
    require_once('conf.tpl');

    $ch curl_init();

    $headr = array();
    $headr[] = 'Content-type: application/json';
    $headr[] = 'Authorization: Bearer '.$token;

    curl_setopt($chCURLOPT_URL,$url);
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_HTTPHEADER,$headr);
    curl_setopt($chCURLOPT_HTTPGET1);

    $data curl_exec($ch);

    if(
    $data === false):
        echo 
    'Die Seite konnte nicht geladen werden!';
        return 
    false;
    endif;

    curl_close($ch);

    $data_array json_decode($datatrue);
    sort($data_array);

    var_dump($data_array); 

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.061
    Partner-ID
    10107

    Standard

    Nimm doch lieber, wie schon erwähnt, bspw. den Symfony Http Client, anstatt alles zu Fuß mit PHP cURL...

  7. #7
    Contao-Nutzer
    Registriert seit
    18.08.2011.
    Beiträge
    68

    Standard

    Hi, habe mal angefangen mit Symfony, will aber nicht so richtig funktiionieren.

    PHP-Code:
    use Symfony\Component\HttpClient\HttpClient;

    $httpClient HttpClient::create();

    $response $httpClient->request('GET''https://.../api/v1/.../seminars/', [
        
    'headers' => [
            
    'Accept' => 'application/json',
        ],
        
    'auth_bearer' => '12345',
    ]);

    $content $response->toArray();

    echo 
    'OK';

    echo 
    $content
    Der läd eine Ewigkeit die Seite und nix passiert.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •