2016-07-13 5 views
0

Googleスプレッドシートの情報を、Googleスプレッドシートから正しく収集するには、ユーザーに何かを認証させる必要はありませんか?権限のないGoogleスプレッドシートの情報を収集する

これまでのところ、私はそれがトリックを行ってきたはずですが、私は

「com.google.gdata.util.AuthenticationExceptionで立ち往生のようにそれが見えた次のコードを持っています。エラー認証(サービスをチェックします名)は、」

次のコードは、以下のことを生成は、ユーザのログインとパスワードは、クライアントのログインと呼ばれるプライベートGoogleのデータにアクセスするためのログイン名とパスワードを使用して

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(); 

} 

} 

答えて

1

正しいです。 Google 2015年5月にクライアントのログインサーバーをシャットダウンします。コードが動作しません。オープン認証を使用する必要があります。

提案:

  1. Switch to Google Sheets v4
  2. 試してみて、APIキーを使用して認証を行います。公開されているGoogleのシートにアクセスできるはずです。サービスアカウントを使用してプライベートGoogleシートにアクセスすることも危険性の低いものです。
+0

全体的に、まだ認証が必要です。私はこれに別のアプローチを試みます、どうもありがとうございます。私は認可が必要だと思っていますが、私の他のアプローチは優れた文書を読むことです。 –

+0

Googleのシートは優れたドキュメントではありません。 Googleドライブにファイルをアップロードすると、Googleシートのドキュメントが表示されます。その後、GoogleシートAPIを使用してアクセスできます。 APIキーまたはサービスアカウントを使用して、ユーザーにファイルへのアクセス権を要求することはできません。しかし、あなたはまだGoogle開発者のコ​​ンソールにあなたのプロジェクトを登録する必要があります。 – DaImTo

+0

私は約1冊のシートと優れた書類を手に入れているので、ユーザーはシートをダウンロードして、それをExcelの書類にする必要があります。 –

関連する問題