Ankündigung

Einklappen
Keine Ankündigung bisher.

Roots Push Nachricht mit PHP Skript

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Roots Push Nachricht mit PHP Skript

    Hallo,

    ich hab ein kleines Großes Problem

    Ich möchte das eine PHP Seite Push Nachrichten über Roost verschickt. (http://roost.me)

    Über einen Root Server hab ich es über eine Bash Datei hinbekommen:
    push.sh

    Code:
    #!/bin/bash
    curl -X POST -u "[nutzer_key]:[geheimer_key]" \
      -H "Content-Type: application/json" \
      --data '{"badge": "+1", "alert":"Das ist der Inhalt", "url":"http://optionale-webseite.de"}' \
      https://get.roost.me/api/push
    Nun meine Frage: Wie geht das mit PHP. Ich bin langsam am verzweifeln.
    Bei ein paar suchen bin ich auf das Skript von dem offiziellen Wordpress plugin gestoßen:
    https://github.com/wp-plugins/roost-...-roost-api.php

    In der letzten Funktion wird die Nachricht versendet, ich komm aber nicht weiter.
    Könnte mir da jemand helfen,
    Wäre euch sehr dankbar


  • #2
    Wie hast Du das denn probiert mit PHP?
    Sollte doch mit cURL genau so gehen?! Wenn nicht, evtl. system, passthru oder exec
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Ja klar, hier ist mein Code:

      Code:
      curl_setopt_array($ch = curl_init(), array(
        CURLOPT_URL => "https://get.roost.me/api/push",
        CURLOPT_USERPWD [KEY]:[Secret_key]",
        CURLOPT_POSTFIELDS => array(
        "badge" => "+1",
        "alert" => "text",
        "url" => "http://seite.de"
      )));
      curl_exec($ch);
      curl_close($ch);
      Da kommt aber immer das als Antwort:
      {"success":false,"error":"Invalid JSON formatting."}

      Wie muss ich das richtig schreiben?
      Die Optionen system, passthru und exec sind auf diesem Server nicht aktiviert.
      Danke für die Hilfe

      Kommentar


      • #4
        Code:
        CURLOPT_USERPWD [KEY]:[Secret_key]",
        ...sieht das denn Deiner Meinung nach korrekt aus?
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #5
          Sorry ich hab das weg gemacht, im Programm seit es ungefähr so aus:

          Code:
          CURLOPT_USERPWD => "74nkdi3j93ja7g4nx373c5c6x33:5v7bc4b7cb3857b54783c48x2x",
          Das sind nicht die beiden originalen keys!!
          Ich möchte die richtigen nicht öffentlich reinschreiben
          Und das " am ende hatte ich vergessen

          Kommentar


          • #6
            Probier bitte mal sowas...
            PHP-Code:
            $cURL curl_init();

            curl_setopt_array(
                
            $cURL,
                array(
                    
            CURLOPT_SSL_VERIFYPEER => false,
                    
            CURLOPT_RETURNTRANSFER => true,
                    
            CURLOPT_URL => "https://get.roost.me/api/push",
                    
            CURLOPT_USERPWD => "[KEY]:[Secret_key]",
                    
            CURLOPT_POSTFIELDS => array(
                        
            "badge" => "+1",
                        
            "alert" => "text",
                        
            "url" => "http://seite.de"
                    
            )
                )
            );

            $cURLResult curl_exec($cURL);
            curl_close($cURL);

            var_dumpjson_decode($cURLResulttrue) ); 
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #7
              Nun kam:
              array(2) { ["success"]=> bool(false) ["error"]=> string(24) "Invalid JSON formatting." }

              Kommentar


              • #8
                Erwartet er die POST-Daten als Array?
                Dann solltest Du die auch als json übergeben und nicht als einfaches Array:
                PHP-Code:
                        CURLOPT_POSTFIELDS => json_encode(
                                array( 
                                    
                "badge" => "+1"
                                    
                "alert" => "text"
                                    
                "url" => "http://seite.de"
                                
                )
                            ) 
                ...machst Du doch quasi auch in Deinem Bash-Script so, oder ist das nicht von Dir?!
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Immer noch der gleiche Fehler.
                  Das Script habe ich von der offiziellen Seite, da gibt es eine Documentation. Allerdings nicht für PHP
                  Hier ist der Link: https://get.roost.me/push/documentation
                  Soll ich dir mal die Keys schicken, könnte das Helfen?

                  Kommentar


                  • #10
                    Vielleicht, kannste mal machen...
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      NOTE: this method requires an HTTP POST request with JSON in the body and "application/json" as the Content-Type.
                      nen content type deffinition ist mir nicht aufgefallen bei php

                      Kommentar


                      • #12
                        Ich vermute, daß dies zuvor per header() gesetzt sein muß!
                        Machen Sie ja im Bash-Beispiel auch:
                        -H "Content-Type: application/json"
                        Competence-Center -> Enjoy the Informatrix
                        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                        Kommentar


                        • #13
                          jo machen die, habs grade probiert(long time not seen curl
                          PHP-Code:
                          curl_setopt($cURL,
                                  
                          CURLOPT_HTTPHEADER, array(
                                          
                          "Content-Type" => "application/json"
                                  
                          )
                          ); 
                          kommt bei mir logen nur "Login using basic auth and the configuration's key and secret as username and password."

                          Kommentar


                          • #14
                            Ist eigentlich egal, wie Du es machst, es kommt immer wieder die gleiche Meldung...
                            Selbst, wenn ich die Daten aus dem Beispiel nehme...
                            Competence-Center -> Enjoy the Informatrix
                            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                            Kommentar


                            • #15
                              Es funktioniert!!

                              1000 Dank für eure Hilfe!
                              Das mit dem Header hatts gebracht

                              Hier der funktionierenden Code:
                              Code:
                              $headers = array(
                                  'Content-Type: application/json',
                              );
                              
                              curl_setopt_array($ch = curl_init(), array(
                                CURLOPT_HTTPHEADER => $headers,
                                CURLOPT_SSL_VERIFYPEER => true, 
                                CURLOPT_URL => "https://get.roost.me/api/push",
                                CURLOPT_USERPWD => "vn458n487x883584woc:4cnq58p8475xoagd", 
                                CURLOPT_POSTFIELDS => json_encode(
                                	array(
                                		"badge" => "+1", 
                                		"alert" => "Mein Nachricht",
                                		"url" => "http://seite.de"
                                	)
                              )));
                              curl_exec($ch);
                              curl_close($ch);
                              (Die Keys sind nur ein Beispiel)

                              Kommentar

                              Lädt...
                              X