-
12.05.2012, 15:29 #1Gelöschter BenutzerGast
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($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);curl_setopt($ch, CURLOPT_URL, 'http://gdata.youtube.com/feeds/api/videos/'.$this->videoID.'/ratings');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_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,
FinnGeändert von Gelöschter Benutzer (21.08.2012 um 21:06 Uhr)
-
12.05.2012, 16:29 #2
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.
-
12.05.2012, 16:51 #3Gelöschter BenutzerGast
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)
-
12.05.2012, 17:02 #4
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 thatGeä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.
-
12.05.2012, 17:06 #5Gelöschter BenutzerGast
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 tokenGeändert von Gelöschter Benutzer (21.08.2012 um 21:06 Uhr)
-
12.05.2012, 17:10 #6
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.
-
12.05.2012, 17:11 #7Gelöschter BenutzerGast
AW: Google Data [Gdata] API - Hilfe
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)
-
12.05.2012, 17:20 #8
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
-
Vollversion: EaseUS Data Recovery Wizard Professional 24h aktion
Von Marc im Forum Produktproben/AktionenAntworten: 3Letzter Beitrag: 03.12.2013, 17:19 -
VB.Net multipart/form-data ?!
Von Baumstumpf im Forum .NetAntworten: 4Letzter Beitrag: 14.01.2013, 22:08 -
[Vorschlag] "Google mal" oder Google Links Hilfen verbieten
Von Comu im Forum FeedbackAntworten: 1Letzter Beitrag: 18.12.2011, 19:34 -
[Hilfe] Brauche hilfe bei Visual Basic
Von Anonymous im Forum SonstigeAntworten: 3Letzter Beitrag: 25.11.2011, 23:36
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.