【发布时间】:2017-01-26 06:43:28
【问题描述】:
我在网络客户端中使用 Google 选择器来允许用户授权我的应用程序并选择要下载的文件。我检索所选文件的 fileId 和 oauthToken 并将其传递到我的后端,类似于我在此处找到的 (Google picker and backend file download)。
后端进程是 .Net,我正在使用下面显示的代码提交文件请求。但是,当我发送相同的 Url、FileId 和 oAuthToken 信息时,即使相同的 Get 请求在 Postman 中工作正常,我也会收到 403 Forbidden 错误。
关于我的 HttpWebRequest 设置可能有什么问题有什么想法吗?
public void Download(string pOAuthToken, string pFileId, string pFileName) {
HttpWebRequest request;
HttpWebResponse response;
bool result = false;
string url = "";
try {
url = "https://www.googleapis.com/drive/v3/files/" + pFileId + "?alt=media";
request = WebRequest.Create(url);
request.Headers.Add("Authorization", ("Bearer " + pOAuthToken));
response = request.GetResponse();
// Insert code to download file here
result = true;
}
catch (Exception ex) {
LogError("Download exception.", ex);
}
finally {
response.Close();
}
return result;
}
【问题讨论】:
-
403 一般表示权限。响应正文中应该有更多信息。
-
您是否尝试使用webContentLink 下载文件?我可以使用它从我的云端硬盘下载文件。
-
响应正文不包含任何其他信息。我尝试将范围权限从 auth/drive.readonly 增加到 auth/drive 但这没有效果。在 google.picker 文档中,我找不到 webContentLink 属性。最接近的属性是 downloadUrl,但该属性在传递回回调函数的 google.picker 文档中未定义。
标签: .net google-drive-api httpwebrequest google-picker