2011-01-04 10 views
6

Ich versuche, Zugang zu dem todo Feed mit dieser URL von Google zu bekommen:Autorisieren für Google ToDo-Liste (authToken, SecID)

https://www.google.com/calendar/tdl?secid=<SECID>&tdl={%22action_list%22%3A[{%22action_type%22%3A%22get_all%22%2C%22action_id%22%3A%221%22%2C%22list_id%22%3A%2215052708471047222911%3A0%3A0%22%2C%22get_deleted%22%3Afalse}]%2C%22client_version%22%3A-1}

Wenn ich dies mit einem korrekten SecID in meinem Browser öffnen, es zeigt mir richtig was ich will.

Nun ist die Frage: Wie bekomme ich programmgesteuert (speziell in einem Java-Programm)? Ich habe Zugriff auf das authToken (von CalendarService), aber ich habe keine Ahnung, wie ich damit meinen Zugriff auf die obige URL autorisieren kann.

Ich habe versucht, die URL http://google.com/accounts/ServiceLogin zu verwenden, aber ich habe keine Beispiele gefunden.

Irgendwelche Hilfe, bitte?

Antwort

1

Von dem, was ich gelesen secid eine Session-ID von Browser-Cookies erhalten wird. Während Ihr Fall Java verwendet, was eine Server-App impliziert. Wenn das der Fall ist, möchten Sie die Idee, secid ganz zu verwenden, fallen lassen.

Stattdessen möchten Sie Google's OAuth2 documentation auschecken. Wenn Sie Java verwenden, sind Sie wahrscheinlich an the web-server OAuth flow interessiert. Achten Sie besonders auf die Sequenzdiagramme.

Die wichtigsten Schritte sind:

1) mit Zustimmung des Benutzers einen Autorisierungscode von Google OAuth erhalten. Dazu leiten Sie den Nutzer mit dem entsprechenden Umfang an Google weiter. Überprüfen Sie die Liste von calendar scopes für Ihren Fall. Sobald der Nutzer zustimmt, leitet Google Sie mit einem Autorisierungscode zu Ihnen zurück.

2) Rufen Sie Google OAuth mit dem Autorisierungscode und den Anmeldeinformationen Ihrer App an, um ein Zugriffstoken auszutauschen.

3) Rufen Sie die Google-Kalender-API mit dem Zugriffstoken an.

Und wenn Sie den Java-Client von Google verwenden, wie von @ChaosPredictor vorgeschlagen, sind einige der Schritte wahrscheinlich bereits in den Java-Client integriert (und Ihr Code wird viel einfacher).

Verwandte Themen