2017-02-03 5 views
3

Ich habe eine App, die mir erlauben, die Daten aus Google Spreadsheet mit API Key zu lesen. Ich mache nur HTTP GET zu dieser Adresse und bekomme eine Antwort mit Daten.Schreiben Sie Daten in Google Spreadsheet mit API Key (C#)

https://sheets.googleapis.com/v4/spreadsheets/18soCZy9H4ZGuu**********BeHlNY1lD8at-Pbjmf8c/values/Sheet1!A1?key=AIzaSyAYJ***********pB-4iKZjYf4y0vhXP8OM 

Aber wenn ich versuche, dies ebenfalls zu tun Daten PUT

https://sheets.googleapis.com/v4/spreadsheets/18soCZy9H4ZGuu**********BeHlNY1lD8at-Pbjmf8c/values/Sheet1!A4?valueInputOption=RAW?key=AIzaSyAYJ***********pB-4iKZjYf4y0vhXP8OM 

sein gibt mir 401-Fehler zu adressieren über HTTP zu schreiben. Code PUT-Anfrage zu machen:

using (WebClient wc = new WebClient()) 
{ 
    byte[] res = wc.UploadData(link, "PUT", Encoding.ASCII.GetBytes(textBox1.Text)); 
    MessageBox.Show(Encoding.Default.GetString(res)); 
} 

Auch Tabelle ist mit Erlaubnis vollständig öffentlich zu lesen und von jedermann ohne Auth zu schreiben. Meine Vermutung ist, dass ich API-Schlüssel nicht verwenden kann, um Daten in eine Tabelle zu schreiben, und nur dazu wird OAuth verwendet.

UPDATE: Also habe ich nur Google.Apis.Sheets.v4 tryed Werte zu schreiben, und jetzt bin ich fast 100% sicher, dass API-Schlüssel kann nicht zum Schreiben von Daten auf Google-Tabelle verwendet werden. Nun, dann benutze ich OAuth 2.0.

+0

Sieht aus wie dieses Problem https://issuetracker.google.com/issues/36755576 deckt diesen Fehler ab, obwohl es seit April nicht aktualisiert worden zu sein scheint. Könnte es wert sein, es zu spielen, damit sie wissen, wie sehr es die Leute beeinflusst.Ich denke, ich werde auch auf OAuth 2.0 umsteigen müssen. – user3432422

Antwort

3

Nun, vielleicht sind Sie richtig und das Problem hier ist der API_KEY selbst.

Wenn Sie die Sheets API documentation überprüfen, wird angegeben, dass jede Anforderung, die Ihre Anwendung an die Google Tabellen-API sendet, Ihre Anwendung bei Google identifizieren muss. Es gibt zwei Möglichkeiten, Ihre Anwendung zu identifizieren: Verwenden Sie eine OAuth 2.0 token (die auch die Anfrage autorisiert) und/oder API key der Anwendung verwenden. Hier ist, wie, welche diese Optionen zu bestimmen, zu verwenden:

  • Wird der Antrag Genehmigung erfordert (wie eine Anforderung für ein privaten Daten des Individuums), dann muss die Anwendung bietet eine OAuth 2.0-Token mit der Anfrage. Die Anwendung kann auch den API-Schlüssel bereitstellen, muss dies aber nicht.

  • Wenn für die Anforderung keine Autorisierung erforderlich ist (z. B. eine Anforderung für öffentliche Daten), muss die Anwendung entweder den API-Schlüssel oder ein OAuth 2.0-Token oder beides bereitstellen.

So was bedeutet, entweder der OAuth 2.0 token oder API-Schlüssel wird in Ihrem Fall arbeiten, da die Datei öffentlich ist. Aber das Problem ist in der PUT-Anfrage, die Sie tun, können wir hier annehmen, dass der API-Schlüssel nicht damit arbeitet. Aber wir haben Alternativen dafür, und das ist das OAuth.

Ich fand auch hier eine verwandte SO question, die Ihnen helfen könnte.

+1

Herzlichen Dank für die Antwort. Aber in meinem Fall kann ich Daten aus der Tabelle mit diesem API-Schlüssel erhalten, aber ich kann nichts in die Tabellenkalkulation schreiben. Außerdem habe ich eine eingebaute API (die auf der Google-Dokumentseite, mit der Sie Anfragen stellen können) versucht, und wenn ich GET zu meiner Tabelle, empfange ich Daten mit API Schlüssel und OAuth. Aber wenn ich versuche, Daten zu schreiben, funktioniert nur OAuth. –

0

Für all noch für eine einfache Antwort der Hoffnung, so scheint es dort nicht sein - jede Schrift auf ein Blatt, und zwar unabhängig von den Blättern Berechtigungen werden OAuth2 benötigen:

‚Dies ist ein vorsätzliches Verhalten. Während öffentliche Blätter anonym lesbar sind, werden anonyme Änderungen derzeit aus verschiedenen Gründen nicht unterstützt.

In diesem Zusammenhang "Jeder" == jeder mit einem Google-Konto. HERE

Verwandte Themen