2017-01-08 4 views
2

私はASP.net COREでC#を使用してGoogleシートを作成して編集しようとしています。.NetコアでGoogleSheets APIを使用するにはどうすればよいですか?

現在、私はこのコードを使用して、シートを編集することができます:あなたが見ることができるように、私はサービスアカウントを使用しています

var credential = GoogleCredential. 
     FromStream(new FileStream("Google/client_secrets.json", FileMode.Open)). 
      CreateScoped(SheetsService.Scope.Spreadsheets); 
     var service = new SheetsService(new BaseClientService.Initializer 
     { 
      HttpClientInitializer = credential, 
      ApplicationName = "just a test" 
     }); 
// service.Spreadsheets.Values.Update(valueRangeNames, spreadsheetId, rangeNames); 

Googleの.NETクイックスタートガイドでは、彼らはこのコードを使用します。

UserCredential credential; 

     using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) 
     { 
      string credPath = System.Environment.GetFolderPath(
       System.Environment.SpecialFolder.Personal); 
      credPath = Path.Combine(credPath, ".credentials/sheets.googleapis.com-dotnet-quickstart.json"); 

      credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
       GoogleClientSecrets.Load(stream).Secrets, 
       Scopes, 
       "user", 
       CancellationToken.None, 
       new FileDataStore(credPath, true)).Result; 
      Console.WriteLine("Credential file saved to: " + credPath); 
     } 

しかし、.NETのコアでは、GoogleWebAuthorizationBrokerは存在しません。 私が理解していることは、Oauth2を使用してGoogleアカウントに認証するために使用されることです。

私はシートAPIを使用してGoogleシートを作成できないので、ここのどこかでも読んでいます。あなたはGoogleのドライブAPIを使用する必要があります。 GoogleドライブのAPI(ゲイン、認証はサービスアカウントを使用)を使用しました。ファイルを作成することはできましたが、アクセス方法はわかりません。私はファイルを作成したことを知っています。なぜなら、それらのAPIに与える例は、そのサービスアカウントのすべてのファイルを表示する小さなメソッドを持っているからです。

ロングストーリーショート: 私はアプリケーションのためのGoogleアカウントを持っているとしましょう。このアカウントを使用して、C#.NetCoreを使用して複数のシートを作成します。 可能であれば、これらのシートを特定の人だけが編集できるようにします。そうでない場合は、アプリケーションからのみです。 誰も閲覧許可のみを持つものとします。

どうすればいいですか?サービスアカウントは私がやっていることに役立ちますか?もしそうでなければ、どうすれば.Net CoreでAPIに認証できますか?

質問する前に、私はそのGoogleWebAuthorizationBrokerを置き換えるために(多くは)検索しましたが、わかりません。私はGoogle APIを使用していないし、経験豊富なプログラマーでもない。それでも、標準の.NETコードを使用すると、Googleクイックスタートガイドのすべての例が機能します。なぜ彼らは.NETのコアで動作しないのですか?

ありがとうございます。

答えて

1

GoogleWebAuthorizationBrokerは.Net Coreの使い方が悪いと思われますが、他の認証方法もあります。

まず、アプリケーションの更新トークンが必要です。コードで以前に承認したことがある場合は、AppData\Roaming\GoogleCredentials\Google.Apis.Auth.OAuth2.Responses.TokenResponse-user(お気に入りのテキストエディタで開く)に配置されます。それ以外の場合は、アプリケーションの更新トークンを取得するにはthisを参照してください。

次に、あなたは単に

var token = new TokenResponse { RefreshToken = tokenYouJustGot }; 
UserCredential credentials; 
using (var stream = File.OpenRead("client_secret.json")) 
{ 
    credentials = new UserCredential(new GoogleAuthorizationCodeFlow(
     new GoogleAuthorizationCodeFlow.Initializer() 
     { 
      ClientSecretsStream = stream 
     }), "user", token); 
} 

var service = new SheetsService(new BaseClientService.Initializer() 
{ 
    HttpClientInitializer = credentials, 
    ApplicationName = "Sample Application" 
}); 

あなたSheetsServiceを取得した後、あなたはスプレッドシートを作成し、編集するために進むことができ、そのように許可することができます。 たとえば、新しいスプレッドシートを作成するには、var sheet = service.Spreadsheets.Create(new Spreadsheet());

関連する問題