【发布时间】:2016-02-29 22:58:33
【问题描述】:
我正在按照此处的教程将文件上传到 Google Drive:
https://developers.google.com/drive/web/quickstart/quickstart-cs
我已经为我的主账户创建了一个 ID 和 Secret,并且使用该信息,我可以上传到我的两个账户中的任何一个(从 %AppData%/Google... 中删除身份验证令牌)。
但是,一位客户向我们提供了他的 google 帐户,因此我们可以尝试一切都对他有效,但对他的帐户无效。我们可以通过网络界面上传和下载文件没有任何问题,但它不适用于我的应用程序。
我注意到的一个区别是我客户的帐户没有谷歌电子邮件地址;它是 name@myclient.com,所以我用我的工作电子邮件地址创建了一个新的 google 帐户,并对其进行了测试,它在登录 Google Drive 后完美运行。
问题出现在最后几行:
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。如果我进入调试模式并改为检查环境,request.Progress(来自基类的私有属性)将其状态字段设置为“失败”,并且异常字段是 ArgumentNullException,并显示消息“参数不能为空. 参数名称:baseUri."。
知道什么地方出了问题吗?
更新: 创建服务对象的代码:
// Create the service.
var service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Drive API Sample",
});
【问题讨论】:
-
您能发布您如何创建
service对象吗? -
@TejasSharma 当然可以,但它只是从教程中粘贴而没有更改。
-
你解决了这个问题吗?
-
@LucaTrazzi 不,我找不到解决方案。
-
@JaimePardos 我遇到了同样的错误,你找到解决这个问题的方法了吗?
标签: .net google-drive-api