2012-04-10 8 views
2

Ich habe eine Anwendung, die derzeit eine Google-Tabelle im Excel-Format abruft und speichert die XLS-Datei im Dateisystem. Es verwendet den ColdFusion google Api Wrapper auf riaforge, http://cfgoogle.riaforge.org/.Abrufen eines öffentlichen Tabellenkalkulationsdokuments mit cfhttp

Der Wrapper authentifiziert sich mit einem Google-Konto und verwendet dann cfhttp, um die Datei im Binärformat herunterzuladen. Die URL zum Abrufen des Dokuments sieht wie folgt aus. https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=#urlEncodedFormat(arguments.id)#&fmcmd=#spreadSheetFormat(arguments.format)#

Ich möchte das Verhalten der App ändern, so dass sie das Dokument direkt von einem öffentlich freigegebenen Dokument url herunterlädt, aber wenn ich das öffentliche Dokument url verwende ich mit einer xls-Datei am Ende, das mir sagt, dass mein Der Browser erfüllt nicht die Mindestanforderungen, daher wird mir die webbasierte Ansicht angezeigt. Wenn ich das gleiche URL-Format verwende, das der Google Docs API-Wrapper verwendet, muss ich mich authentifizieren, obwohl ich die ID des öffentlichen Dokuments übergebe.

Ich habe die Google API-Dokumente durchsucht, aber ich konnte das richtige URL-Format nicht finden, um das öffentliche Dokument anzufordern, sodass ich die Tabelle mit cfhttp direkt im Binärformat herunterladen kann. Welches Format benötige ich, um eine öffentliche Tabelle im xls-Format ohne Authentifizierung mit cffhttp herunterzuladen?

Antwort

1

Ich musste mich mit Ray's Google API cfc auf riaforge authentifizieren. Nach der Authentifizierung mit meinem eigenen Konto konnte ich die ID einer öffentlichen Tabelle an die Download-Funktion von Google cfc übergeben und die Tabelle als XLS-Datei herunterladen. Ich konnte keine Möglichkeit finden, es herunterzuladen, ohne mich zu authentifizieren, aber diese Methode hält die Endbenutzer davon ab, sich mit ihrem Konto authentifizieren zu müssen.

1

Google liest höchstwahrscheinlich die Variable "user_agent" der Anfrage. In CF ist diese Variable standardmäßig Coldfusion oder Java. Versuchen Sie, das "useragent" -Attribut zur cfhttp-Anfrage hinzuzufügen und etwas Gemeines zu verwenden - wie "Mozilla/5.0 (Windows NT 6.1; WOW64)".

+0

Ich habe dies versucht und die Tabelle, die ich am Ende bin, ist, was ich nehme, ist eine Web-Antwort für mich zu authentifizieren, aber wenn ich die URL in einen tatsächlichen Browser die öffentliche Tabelle ohne mich wird angezeigt authentifiziert zu Google. Ich bin mir nicht sicher, warum es sich anders verhalten würde zwischen der Ausführung der URL in einem Browser und durch cfhttp? –

+0

Da ist wahrscheinlich mehr dran. Ich würde Firebug verwenden, um die unbearbeitete Anfrage zu untersuchen, die von FF an Google gesendet wurde (eine Anfrage, die erfolgreich ist) und dann zu sehen, ob andere Variablen oder Header oder Cookies beteiligt sind. Es ist wahrscheinlich Versuch und Irrtum :) –

+0

Es scheint, dass es nicht mehr möglich sein kann, eine Tabelle herunterzuladen, ohne sich zu authentifizieren? Das könnte die richtige Frage sein. Kennt jemand das URL-Format, das benötigt wird, um eine öffentliche Google-Tabelle herunterzuladen, ohne sich zu authentifizieren? –

Verwandte Themen