2016-07-13 7 views
0

Wie würde ich in einem öffentlichen Google Sheet-Dokument Informationen aus Google Tabellen korrekt erfassen, ohne dass der Benutzer irgendetwas authentifizieren muss?Sammeln von Google Tabellen-Informationen ohne Autorisierung

Bisher habe ich den folgenden Code, ich das sieht gefunden, wie es den Trick getan haben sollte, aber ich stecken mit dem

„com.google.gdata.util.AuthenticationException: Authentifizierungs-Fehler (Service überprüfen Name)“

der folgende Code unten erzeugt es, die Benutzer-Login und Passwort korrekt sind

package streamupdater.util; 

import com.google.gdata.client.spreadsheet.SpreadsheetService; 
import com.google.gdata.data.spreadsheet.ListEntry; 
import com.google.gdata.data.spreadsheet.ListFeed; 
import com.google.gdata.data.spreadsheet.SpreadsheetEntry; 
import com.google.gdata.util.ServiceException; 

import java.io.IOException; 
import java.net.URL; 


public class readData { 

public static final String GOOGLE_ACCOUNT_USERNAME = "abc"; 
public static final String GOOGLE_ACCOUNT_PASSWORD = "xxx"; 

public static final String SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/1fS0d19BOExTPdWqIYTvD9IskGIYEskqPY0WL9i7FByk/edit#gid=0"; 



public String getData(){ 
    String status=""; 

try{ 
/** Our view of Google Spreadsheets as an authenticated Google user. */ 
    SpreadsheetService service = new SpreadsheetService("Print Google Spreadsheet Demo"); 

    // Login and prompt the user to pick a sheet to use. 
    service.setUserCredentials(GOOGLE_ACCOUNT_USERNAME, 
      GOOGLE_ACCOUNT_PASSWORD); 

    // Load sheet 
    URL metafeedUrl = new URL(SPREADSHEET_URL); 
    SpreadsheetEntry spreadsheet = service.getEntry(metafeedUrl,SpreadsheetEntry.class); 
    URL listFeedUrl = spreadsheet.getWorksheets().get(0).getListFeedUrl(); 

    // Print entries 
    ListFeed feed = service.getFeed(listFeedUrl, ListFeed.class); 

    for (ListEntry entry : feed.getEntries()) { 
     System.out.println("new row"); 
     for (String tag : entry.getCustomElements().getTags()) { 
      System.out.println("  " + tag + ": " 
        + entry.getCustomElements().getValue(tag)); 
      status=entry.getCustomElements().getValue(tag); 

     } 
    } 

}catch(Exception e){ 
    System.out.println(e); 
} 
System.out.println(status); 
return(status); 
} 

public static void main(String[] args) { 

    readData rd = new readData(); 
    rd.getData(); 

} 

} 

Antwort

1

ein Login und Passwort Mit privaten Daten von Google zuzugreifen Client Login aufgerufen. Google Herunterfahren der Client-Login-Server im Mai 2015. Dort für Ihren Code wird nicht funktionieren. Sie müssen Open Authentication verwenden.

Vorschläge:

  1. Switch to Google Sheets v4
  2. Versuche und authentifizieren mit einem API-Schlüssel. Es sollte Ihnen Zugriff auf ein öffentliches Google-Blatt geben. Eine andere weniger riskante Sache wäre die Verwendung eines Dienstkontos für den Zugriff auf ein privates Google-Blatt.
+0

Also insgesamt muss ich noch authentifizieren. Ich werde einen anderen Ansatz versuchen, vielen Dank. Ich vermutete, dass eine Autorisierung erforderlich sein würde, aber mein anderer Ansatz wird darin bestehen, ein Excel-Dokument zu lesen. –

+0

Google-Blätter ist kein Excel-Dokument. Wenn Sie eine Datei auf Google Drive hochladen, wird es ein Google-Blatt Dokument kommen. Auf die Sie dann mit der Google-Blätter-API zugreifen können. Sie können einen API-Schlüssel oder ein Dienstkonto verwenden, die keine Benutzerberechtigung für den Zugriff auf die Datei anfordern. Sie müssen Ihr Projekt jedoch noch in der Google Developers Console registrieren. – DaImTo

+0

I kmow über die Blätter und Excel-Dokument, Benutzer müssen ihre Blatt herunterladen und erfordern es ein Excel-Dokument. –

Verwandte Themen