1. #1
    Gelöschter Benutzer
    Gast

    Standard Google Data [Gdata] API - Hilfe

    Moin Leute,


    ich bin gerade dabei mich mit der Youtube API (kurz Gdata) auseinander zusetzen.
    Mein Ziel ist es: eine PHP Klasse zu schreiben die alles kann, was ein Youtube API Bot auch kann:



    • Account valid / unvalid [works]
    • Kommentare schreiben [works]
    • Videos liken / disliken [help]
    • Abbonieren [help]




    Mehr sollte die Klasse nicht können. Leider habe ich ein kleines Problem beim Liken / Disliken von Videos.


    API Referenz: https://developers.google.com/youtub...otocol_ratings


    Mein Versuch:


    PHP-Code:
    public function Rate($state) {$ch = curl_init();
    $postData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n""<entry xmlns=\"http://www.w3.org/2005/Atom\" xmlns:yt=\"http://gdata.youtube.com/schemas/2007\"> \r\n""<link rel='http://gdata.youtube.com/schemas/2007#video.ratings' type='application/atom+xml' href='https://gdata.youtube.com/feeds/api/videos/".$this->videoID."/ratings'/>\r\n""</entry>";
    $headers = array('POST /feeds/api/videos/'.$this->videoID.'/ratings','Host: gdata.youtube.com','Content-Type: application/atom+xml','Content-Length: ' strlen($postData),'Authorization: Bearer ' $this->token,'GData-Version: 2','X-GData-Key: key=' $this->apikey,);
    print_r($headers);
    curl_setopt($chCURLOPT_POST1);curl_setopt($chCURLOPT_POSTFIELDS$postData);curl_setopt($chCURLOPT_URL'http://gdata.youtube.com/feeds/api/videos/'.$this->videoID.'/ratings');curl_setopt($chCURLOPT_RETURNTRANSFER1);curl_setopt($chCURLOPT_FOLLOWLOCATION1);curl_setopt($chCURLOPT_HEADER0);curl_setopt($chCURLOPT_HTTPHEADER$headers);
    $response curl_exec($ch);curl_close($ch);
    echo 
    $response;}

    Leider habe ich ein Problem mit dem Token, welches ich ja beim Login parsen muss.
    Meine Authentifikation Funktion sieht wie folgt aus:


    PHP-Code:
     public function Auth() {$authenticationURL 'https://www.google.com/accounts/ClientLogin';try {$this->httpClient Zend_Gdata_ClientLogin::getHttpClient($username $this->email,$password $this->pass,$service 'youtube',$client null,$source 'FinnYT',$loginToken null,$loginCaptcha null,$authenticationURL);} catch(Zend_Gdata_App_Exception $ex) {$this->ActiveError $ex->getMessage();return false;}$this->token $this->httpClient->getAuthSubToken();return true;} 

    $this->token = $this->httpClient->getAuthSubToken();


    Da liegt das Problem, denn getAuthSubToken() gibt nichts zurück und den brauche ich ja um Videos zu liken, richtig?


    Response von der API:


    PHP-Code:
    <HTML><HEAD><TITLE>Unknown authorization header</TITLE></HEAD><BODY BGCOLOR="#FFFFFF" TEXT="#000000"><H1>Unknown authorization header</H1><H2>Error 401</H2></BODY></HTML

    Ich freue mich über jede Antwort!


    MfG,
    Finn
    Geändert von Gelöschter Benutzer (21.08.2012 um 21:06 Uhr)

  2. #2
    Avatar von Gnome
    Registriert seit
    14.04.2012
    Beiträge
    75
    Thanked 34 Times in 24 Posts

    Standard AW: Google Data [Gdata] API - Hilfe

    PHP-Code:
    function getAuthSubHttpClient()
    {
        if (!isset(
    $_SESSION['sessionToken']) && !isset($_GET['token']) ){
            echo 
    '<a href="' getAuthSubRequestUrl() . '">Login!</a>';
            return;
        } else if (!isset(
    $_SESSION['sessionToken']) && isset($_GET['token'])) {
          
    $_SESSION['sessionToken'] = Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']);
        }

        
    $httpClient Zend_Gdata_AuthSub::getHttpClient($_SESSION['sessionToken']);
        return 
    $httpClient;

    __________________
    /edit:
    ODER
    PHP-Code:
    $authenticationURL'https://www.google.com/accounts/ClientLogin';
    $httpClient 
      
    Zend_Gdata_ClientLogin::getHttpClient(
                  
    $username 'myuser@gmail.com',
                  
    $password 'mypassword',
                  
    $service 'youtube',
                  
    $client null,
                  
    $source 'MySource'// a short string identifying your application
                  
    $loginToken null,
                  
    $loginCaptcha null,
                  
    $authenticationURL); 
    Geändert von Gnome (12.05.2012 um 16:51 Uhr) Grund: Doppelpost automatisch zusammengefügt.
    Programmier-Support nur in klar formulierten Threads.


    Ich helfe beim Programmieren nicht per PN oder Teamviewer. Sämtliche Anfragen werden ignoriert.

  3. #3
    Gelöschter Benutzer
    Gast

    Standard AW: Google Data [Gdata] API - Hilfe

    Danke für deine Antwort aber da das ganze automatisiert laufen soll mit mehr als 40 Accounts ist das leider keine Lösung.


    /edit:


    Zweites nutze ich momentan, siehe oben. Leider gibt mir die Funktion keinen Token zurück womit ich Videos Bewerten kann.
    Geändert von Gelöschter Benutzer (21.08.2012 um 21:06 Uhr)

  4. #4
    Avatar von Gnome
    Registriert seit
    14.04.2012
    Beiträge
    75
    Thanked 34 Times in 24 Posts

    Standard AW: Google Data [Gdata] API - Hilfe

    Letzteres funktioniert bei mir, also muss bei dir irgendwas im argen liegen.


    Achja das $username = musst du natürlich im Code entfernen. Ist ja ein normaler funktionsaufruf

    $username = "string" ist immer true


    PHP-Code:
    $this->httpClient        Zend_Gdata_ClientLogin::getHttpClient
                
    (
                      
    $this->email,
                      
    $this->pass,
                      
    $service 'youtube',
                      
    null,
                      
    'FinnYT',
                      
    null,
                      
    null,
                      
    $authenticationURL
                
    ); 

    try that
    Geändert von Gnome (12.05.2012 um 17:05 Uhr)
    Programmier-Support nur in klar formulierten Threads.


    Ich helfe beim Programmieren nicht per PN oder Teamviewer. Sämtliche Anfragen werden ignoriert.

  5. #5
    Gelöschter Benutzer
    Gast

    Standard AW: Google Data [Gdata] API - Hilfe

    Hm.


    Du kannst mit dem Token, den du zurück bekommst, Videos Liken/Disliken?


    $this->httpClient->getClientLoginToken() returnt mir einen Token der c.a. so aussieht:


    Code:
    DQAAAM4AAACzA1ihRJlJlTNeR9CTPnd-YNODR9q1UIDtl0P
    afLdq0ZKM2Xv-XSHpIi8aqYvb-UX7O51zg1yAslM_klB0GFIhP6nxiQkjpWorNy85mH48Lau66zd gS
    Rhot5wGtg1W8xNNk8ZlU2_22stCd8nSMY9K1ZFWbMx-axlI9VIorzJkjFkGWXax7Y8E6lvCtOW5XNu
    AW5d4dcNfDGKqAyyLLzMW7cl8625Vt_o2M-44xo5CVaW9-NRdIgeNc3daKwRlUn2dP5SY1C5pP2I

    Wenn ich mit dem Token versuche Videos zu bewerten bekomme ich folgenden Fehler von der API:


    Token invalid - Invalid token: Cannot parse AuthSub token
    Geändert von Gelöschter Benutzer (21.08.2012 um 21:06 Uhr)

  6. #6
    Avatar von Gnome
    Registriert seit
    14.04.2012
    Beiträge
    75
    Thanked 34 Times in 24 Posts

    Standard AW: Google Data [Gdata] API - Hilfe

    Schau dir nochmal mein Edit an
    Programmier-Support nur in klar formulierten Threads.


    Ich helfe beim Programmieren nicht per PN oder Teamviewer. Sämtliche Anfragen werden ignoriert.

  7. #7
    Gelöschter Benutzer
    Gast

    Standard AW: Google Data [Gdata] API - Hilfe

    Zitat Zitat von Gnome Beitrag anzeigen
    Schau dir nochmal mein Edit an

    Habe ich, aber das ändert nichts daran.


    PHP-Code:
    ($username $this->email,$password $this->pass,$service 'youtube',$client null,$source 'FinnYT',$loginToken null,$loginCaptcha null,$authenticationURL); 

    ist dasselbe wie


    PHP-Code:
    ($this->email,$this->pass,'youtube',null,'FinnYT',null,null,$authenticationURL); 

    Nur das man beim ersten Teil noch weiß, was man auf "null" setzt.
    Die Auth() Funktion klappt übrigens.
    Geändert von Gelöschter Benutzer (21.08.2012 um 21:06 Uhr)

  8. #8
    Avatar von Gnome
    Registriert seit
    14.04.2012
    Beiträge
    75
    Thanked 34 Times in 24 Posts

    Standard AW: Google Data [Gdata] API - Hilfe

    PHP-Code:
       $headers = array(
                
    'POST /feeds/api/videos/'.$this->videoID.'/ratings',
                
    'Host: gdata.youtube.com',
                
    'Content-Type: application/atom+xml',
                
    'Content-Length: ' strlen($postData),
                
    'Authorization: Bearer ' urlencode($this->token),
                
    'GData-Version: 2',
                
    'X-GData-Key: key=' $this->apikey,
            ); 
    Programmier-Support nur in klar formulierten Threads.


    Ich helfe beim Programmieren nicht per PN oder Teamviewer. Sämtliche Anfragen werden ignoriert.

Ähnliche Themen

  1. Vollversion: EaseUS Data Recovery Wizard Professional 24h aktion
    Von Marc im Forum Produktproben/Aktionen
    Antworten: 3
    Letzter Beitrag: 03.12.2013, 17:19
  2. VB.Net multipart/form-data ?!
    Von Baumstumpf im Forum .Net
    Antworten: 4
    Letzter Beitrag: 14.01.2013, 22:08
  3. [Vorschlag] "Google mal" oder Google Links Hilfen verbieten
    Von Comu im Forum Feedback
    Antworten: 1
    Letzter Beitrag: 18.12.2011, 19:34
  4. [Hilfe] Brauche hilfe bei Visual Basic
    Von Anonymous im Forum Sonstige
    Antworten: 3
    Letzter Beitrag: 25.11.2011, 23:36
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.