我按照此处的教程将文件上传到Google云端硬盘:
https://developers.google.com/drive/web/quickstart/quickstart-cs
我为我的主帐户创建了一个Id和Secret,有了这些信息,我就可以上传到我的两个帐户中的任何一个(从%AppData%/ Google中删除身份验证令牌......)。
然而,客户给了我们他的谷歌帐户,所以我们可以尝试一切都适合他,它没有为他的帐户工作。我们可以通过网络界面上传和下载文件,没有任何问题,但它不能与我的应用程序一起使用。
我注意到的一个区别是我的客户的帐户没有谷歌电子邮件地址;它是name@myclient.com,因此我使用我的工作电子邮件地址创建了一个新的Google帐户,对其进行了测试,并且只需登录Google云端硬盘即可完美运行。
问题出现在最后几行:
FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "text/plain");
request.Upload();
File file = request.ResponseBody;
Console.WriteLine("File id: " + file.Id);
此时,request.ResponseBody为null,因此,如果我只是运行代码,file.Id会抛出ArgumentNullException。如果我进入调试模式并检查环境,请求.Progress(来自基类的私有属性)将其Status字段设置为" Failed",并且Exception字段是ArgumentNullException,其中包含消息& #34;参数不能为空。参数名称:baseUri。"。
有什么可能出错的想法吗?
更新 创建服务对象的代码:
// Create the service.
var service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Drive API Sample",
});
答案 0 :(得分:1)
你有一个没有正确范围的OAuth令牌!
将范围设置为:
static string[] Scopes = { DriveService.Scope.Drive, DriveService.Scope.DriveFile };
在我的第一次尝试中,我只使用了Drive
而不是DriveFile
答案 1 :(得分:0)
我遇到了同样的问题,最后我发现API未启用。 我在案件中回复原因,希望对你有帮助。
在我的情况下,我没有正确配置API设置。
报告问题时未正确配置API时抛出ArgumentNullException的原因。 https://code.google.com/p/google-api-dotnet-client/issues/detail?id=421
ResumableUpload.InitializeUpload 中的第一个请求出错,但未报告包含“未正确配置API”的错误消息。
答案 2 :(得分:0)
我通过以下步骤解决了完全相同的错误:
然后应该在选项卡" Activated APIs"而且这个错误消失了。