[PHP] Post query via Zend naar google docs geeft 400 error

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tha Ertenal
  • Registratie: September 2002
  • Laatst online: 31-05-2022
Ik ben wat aan het experimenteren met de Google Docs API. De laatste (3) is helaas (nog?) niet verkrijgbaar voor PHP dus het is puur experimenteren. De inlog etc gebeurt nog wel via Zend, en dat werkt allemaal prima. Nu wil ik de permissie van een document aanpassen. Ik wil een emailadres toevoegen van iemand die dan de writer permissie krijgt. Via de google docs api kwam ik erachter dat dit met een POST HTTP request moet. De volgende code heb ik gebruikt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$service = Zend_Gdata_Docs::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$service = new Zend_Gdata($client);

$xml = "<entry xmlns=\"http://www.w3.org/2005/Atom\" xmlns:gAcl='http://schemas.google.com/acl/2007'>
    <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/acl/2007#accessRule'/>
    <gAcl:role value='reader'/>
    <gAcl:scope type='user' value='new_writer@example.com'/>
</entry>";

$data = $service->post($xml, 'http://docs.google.com/feeds/documents/private/full/document%3A0AZ1YcuoFtsN-ZG5kYzNjcF8wZmZnYnJiZjU/gatlyvpm');

print_r($data);


Dit geeft mij een 400 error:

Fatal error: Uncaught exception 'Zend_Gdata_App_HttpException' with message 'Expected response code 200, got 400 Invalid request URI' in...

Alleen vind ik dat raar. De link is namelijk direct gekopieerd vanuit een documentlijst die ik via de get() methode heb verkregen. Als ik het documentId via de get() functie meegeef krijg ik het document, dat is dus ook goed. En de rest van de code haal ik van de google docs api. Zit het dan toch daar ergens fout?

Google docs api: http://code.google.com/ap...opers_guide_protocol.html
(ctrl+f: Modifying the ACL feed)

AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450


Acties:
  • 0 Henk 'm!

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Post je wel naar de goede URL? In de docs eindigt de url namelijk met /acl.

On track


Acties:
  • 0 Henk 'm!

  • Tha Ertenal
  • Registratie: September 2002
  • Laatst online: 31-05-2022
Dat is waar. Idd een fout van mij. Maargoed, dan nog werkt het niet. Ik gebruik nu de volgende link:

$data = $service->post($xml, 'http://docs.google.com/feeds/default/private/full/document%3A0AZ1YcuoFtsN-ZG5kYzNjcF8wZmZnYnJiZjU/acl');

edit:

Blijkbaar staat het in de google docs api verkeerd. De correcte (en werkende) url is:

http://docs.google.com/fe.../full/document:documentID

Ik vraag me alleen af hoe google zo'n grote fout heeft kunnen maken??

[ Voor 34% gewijzigd door Tha Ertenal op 28-06-2010 13:22 ]

AMD Phenom II X6 1090T | 2x 4GB Kingston | Geforce GTX 560TI | Creative I-Trigue L3450