使用API密钥创建Drive Api服务C#
我正在制作使用API密钥来验证和使用Drive API服务的应用程序。我没有使用其他方法进行身份验证。 这是我的代码。使用API密钥创建Drive 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密钥进行身份验证?
你的应用程序必须使用OAuth 2.0授权请求。没有其他授权协议被支持。如果您的应用程序使用Google登录,则会为您处理授权的某些方面。
到驱动器API的所有请求都必须通过身份验证的用户进行授权。
OAuth 2.0的授权过程或“流程”的详细信息根据您正在编写的应用程序类型而有所不同。以下一般流程适用于所有应用类型:
- 当你创建你的应用程序,您使用Google API Console注册。 Google随后会提供您稍后需要的信息,例如客户端ID和客户端密码。
- 在Google API控制台中激活Drive API。 (如果API未在API控制台中列出,则跳过此步骤。)
- 当您的应用程序需要访问用户数据时,它会要求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
也许我是有点晚来回答这个问题,但是这能够帮助未来的人们。如果该文件夹(我猜你正试图获取文件夹中的文件)被设置为公共,那么你不需要进行身份验证。您可以使用公共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();
通过这种方式找到直接位于编号为文件夹中的所有文件1234567 “Q”属性可以是用于更多的事情,例如使用文件夹特定的MIME类型来搜索文件夹。在这种情况下,它会是这样的:
listRequest.Q = "mimeType = 'application/vnd.google-apps.folder'";
要了解更多关于我们如何使用“Q”属性:https://developers.google.com/drive/v3/web/search-parameters
而且这里还有关于如何创建服务公共和私人,然后漂亮的链接如何从文件夹中获取文件,以及如何解决在其中有超过1000个文件夹中的情况:
- 服务:http://www.daimto.com/google-drive-authentication-c/
- 获取文件:http://www.daimto.com/google-drive-api-c/
我希望这有助于!