2016-12-04 68 views
0

APIキーを使用してドライブAPIサービスを認証して使用するアプリケーションを作成しています。私は他の認証方法を使用していません。 これは私のコードです。APIキーを使用してドライブAPIサービスを作成するC#

 var bcs = new BaseClientService.Initializer(); 
     bcs.ApiKey = "38a0f7d505fe18fec64fbf343ecaaaf310dbd744"; 
     bcs.ApplicationName = "sampleApp"; 
     var service = new DriveService(bcs); 
     // Define parameters of request. 
     FilesResource.ListRequest listRequest = service.Files.List(); 
     listRequest.PageSize = 10; 
     listRequest.Fields = "nextPageToken, files(id, name)"; 

     // List files. 
     IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute() 
      .Files; 
     Console.WriteLine("Files:"); 
     if (files != null && files.Count > 0) 
     { 
      foreach (var file in files) 
      { 
       Console.WriteLine("{0} ({1})", file.Name, file.Id); 
      } 
     } 
     else 
     { 
      Console.WriteLine("No files found."); 
     } 
     Console.Read(); 

これは機能しません。認証にAPIキーを使用するにはどうすればよいですか?

答えて

0

お客様のアプリケーションは、OAuth 2.0を使用してリクエストを承認する必要があります。その他の認可プロトコルはサポートされていません。アプリケーションでGoogle Sign-Inを使用している場合、認証のいくつかの側面が処理されます。

ドライブAPIへのすべてのリクエストは、認証されたユーザーによって承認されている必要があります。

OAuth 2.0の認証プロセスまたは「フロー」の詳細は、作成しているアプリケーションの種類によって多少異なります。次の一般的なプロセスは、すべての種類のアプリケーションに適用されます:

  • アプリケーションを作成するとき、あなたはGoogle API Consoleを使用して登録します。 Googleでは、クライアントIDやクライアントの秘密情報など、後で必要となる情報を提供しています。
  • Google APIコンソールでドライブAPIを有効にします。
  • アプリケーションでユーザーデータにアクセスする必要がある場合は、特定のスコープのアクセス権をGoogleに要求します(APIコンソールにAPIが表示されていない場合は、この手順はスキップしてください)。
  • Googleは、の同意画面を表示し、アプリケーションにデータの一部を要求する権限を与えるように求めます。
  • ユーザーが承認すると、Googleはアプリケーションに短寿命のアクセストークンを提供します。
  • アプリケーションは、アクセストークンを要求に添付してユーザーデータを要求します。
  • Googleがリクエストとトークンが有効であると判断した場合、リクエストされたデータを返します。

いくつかのフローは、このような新しいアクセストークンを取得するリフレッシュトークンを使用するなど、追加の手順が含まれます。さまざまなタイプのアプリケーションのフローの詳細については、GoogleのOAuth 2.0 documentationを参照してください。

ここでドライブAPIのOAuth 2.0スコープ情報です:https://developers.google.com/drive/v3/web/about-auth#what_scope_or_scopes_does_my_app_need

0

は、たぶん私はこれに答えるために少し遅れてんだけど、これは将来の人々を助けることができます。フォルダ(私はあなたがフォルダ内のファイルを取得しようとしていると思います)がpublicに設定されている場合は、認証する必要はありません。公開APIキーを使用してアクセスできます。 ソリューションはほとんどがあった、それが唯一のフォルダIDに設定されたプロパティの.Q必要:

Google.Apis.Services.BaseClientService.Initializer bcs = new Google.Apis.Services.BaseClientService.Initializer(); 
    bcs.ApiKey = "38a0f7d505fe18fec64fbf343ecaaaf310dbd744"; 
    bcs.ApplicationName = "sampleApp"; 

    Google.Apis.Drive.v3.DriveService service = new Google.Apis.Drive.v3.DriveService(bcs); 

    // Define parameters of request. 
    Google.Apis.Drive.v3.FilesResource.ListRequest listRequest = service.Files.List(); 

    string folderID = "1234567"; //Change this for your folder ID. 
    listRequest.Q = "'" + folderID + "' in parents"; 
    listRequest.PageSize = 10; 
    listRequest.Fields = "nextPageToken, files(id, name)"; 

    // List files. 
    IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute().Files; 
    Console.WriteLine("Files:"); 
    if (files != null && files.Count > 0) 
    { 
     foreach (var file in files) 
     { 
      Console.WriteLine("{0} ({1})", file.Name, file.Id); 
     } 
    } 
    else 
    { 
     Console.WriteLine("No files found."); 
    } 
    Console.Read(); 

それは、そのIDでのフォルダに直接配置されたすべてのファイルを検索します。この道を1234567 「Q」プロパティが可能たとえば、フォルダ固有のMIMEタイプを使用してフォルダを検索するなど、より多くのことに使用されます。私たちは「Q」プロパティを使用することができる方法についての詳細を知るためには

listRequest.Q = "mimeType = 'application/vnd.google-apps.folder'"; 

:このケースでは、ようなものになるだろうhttps://developers.google.com/drive/v3/web/search-parameters

そして、ここにそこパブリックおよびプライベートサービスを作成する方法についての素敵なリンクがあり、どのフォルダからファイルを取得し、そしてどのようにフォルダ内の1000個の以上のファイルが持っている場合解決するために:

私はこれが役立つことを願っています!

関連する問題