C# 使用Api密钥C创建驱动器Api服务#

C# 使用Api密钥C创建驱动器Api服务#,c#,google-drive-api,drive,C#,Google Drive Api,Drive,我正在制作一个应用程序,它使用API密钥进行身份验证并使用驱动器API服务。我没有使用其他方法进行身份验证。 这是我的密码 var bcs = new BaseClientService.Initializer(); bcs.ApiKey = "38a0f7d505fe18fec64fbf343ecaaaf310dbd744"; bcs.ApplicationName = "sampleApp"; var service = new

我正在制作一个应用程序,它使用API密钥进行身份验证并使用驱动器API服务。我没有使用其他方法进行身份验证。 这是我的密码

        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();
var bcs=new BaseClientService.Initializer();
bcs.ApiKey=“38A0F7D505FE18FEC64FBF343ECAAF310DBD744”;
bcs.ApplicationName=“sampleApp”;
var服务=新的驱动器服务(bcs);
//定义请求的参数。
fileResource.ListRequest ListRequest=service.Files.List();
listRequest.PageSize=10;
listRequest.Fields=“nextPageToken,files(id,name)”;
//列出文件。
IList files=listRequest.Execute()
.档案;
Console.WriteLine(“文件:”);
if(files!=null&&files.Count>0)
{
foreach(文件中的var文件)
{
Console.WriteLine(“{0}({1})”,file.Name,file.Id);
}
}
其他的
{
WriteLine(“未找到任何文件”);
}
Console.Read();
它不起作用。如何使用API密钥进行身份验证?

您的应用程序必须使用API密钥来授权请求。不支持其他授权协议。如果您的应用程序使用Google登录,授权的某些方面将为您处理

对驱动器API的所有请求必须由经过身份验证的用户授权

OAuth 2.0的授权过程或“流程”的详细信息根据您编写的应用程序类型有所不同。以下一般流程适用于所有应用程序类型:

  • 创建应用程序时,使用注册。谷歌随后会提供您以后需要的信息,如客户ID和客户机密
  • 在Google API控制台中激活驱动器API。(如果API未在API控制台中列出,则跳过此步骤。)
  • 当您的应用程序需要访问用户数据时,它会要求Google提供特定的访问范围
  • 谷歌向用户显示一个同意屏幕,要求用户授权你的应用程序请求他们的部分数据
  • 如果用户同意,那么谷歌会给你的应用程序一个短期的访问令牌
  • 应用程序请求用户数据,并将访问令牌附加到请求
  • 如果Google确定您的请求和令牌有效,它将返回请求的数据
一些流包括附加步骤,例如使用刷新令牌获取新的访问令牌。有关各种类型应用程序的流的详细信息,请参阅Google的

以下是驱动器API的OAuth 2.0范围信息:

您的应用程序必须使用它来授权请求。不支持其他授权协议。如果您的应用程序使用Google登录,授权的某些方面将为您处理

对驱动器API的所有请求必须由经过身份验证的用户授权

OAuth 2.0的授权过程或“流程”的详细信息根据您编写的应用程序类型有所不同。以下一般流程适用于所有应用程序类型:

  • 创建应用程序时,使用注册。谷歌随后会提供您以后需要的信息,如客户ID和客户机密
  • 在Google API控制台中激活驱动器API。(如果API未在API控制台中列出,则跳过此步骤。)
  • 当您的应用程序需要访问用户数据时,它会要求Google提供特定的访问范围
  • 谷歌向用户显示一个同意屏幕,要求用户授权你的应用程序请求他们的部分数据
  • 如果用户同意,那么谷歌会给你的应用程序一个短期的访问令牌
  • 应用程序请求用户数据,并将访问令牌附加到请求
  • 如果Google确定您的请求和令牌有效,它将返回请求的数据
一些流包括附加步骤,例如使用刷新令牌获取新的访问令牌。有关各种类型应用程序的流的详细信息,请参阅Google的


下面是驱动器API的OAuth 2.0范围信息:

也许我回答这个问题有点晚,但这可以帮助未来的人。如果文件夹(我猜您正在尝试获取文件夹中的文件)设置为public,那么您不需要进行身份验证。您可以使用公共API密钥访问它。 解决方案就快到了,它只需要将属性.Q设置为文件夹ID:

    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();
要了解有关如何使用“Q”属性的更多信息,请执行以下操作:

这里有一些很好的链接,介绍如何创建公共和私人服务,如何从文件夹中获取文件,以及如何解决文件夹中文件超过1000个的问题:

  • 服务:
  • 获取文件:

我希望这有帮助

也许我回答这个问题有点晚了,但这可以帮助未来的人。如果文件夹(我猜您正在尝试获取文件夹中的文件)设置为public,那么您不需要进行身份验证。您可以使用公共API密钥访问它。 解决方案就快到了,它只需要将属性.Q设置为文件夹ID:

    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();
要了解有关如何使用“Q”属性的更多信息,请执行以下操作:

这里有一些很好的链接,介绍如何创建公共和私人服务,如何从文件夹中获取文件,以及如何解决文件夹中文件超过1000个的问题:

  • 服务:
  • 获取文件:
我希望这有帮助