【发布时间】:2015-07-13 02:29:31
【问题描述】:
我请求你的帮助...
我们需要使用 WebForms 应用程序将视频上传到 Youtube 频道。所以,这是我想向您展示的主要代码行:
var folder = System.Web.HttpContext.Current.Server.MapPath("~/App_Data/GoogleData");
UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
new ClientSecrets
{
ClientId = ConfigInfo.YouTubeApiClient_id,
ClientSecret = ConfigInfo.YouTubeAppClient_secret,
},
new[] { YouTubeService.Scope.YoutubeUpload },
"user",
CancellationToken.None,
new FileDataStore(folder,true)).Result;
我遇到的错误是:System.ComponentModel.Win32Exception:访问被拒绝。
如果有帮助,请提供一些附加信息:
- 我已在 console.developers.google.com 中将 clientId 和凭据创建为应用程序。
- 如果我调试应用程序,它在我的本地主机上运行良好,但在 Arvixe 共享托管服务器上无法运行。
这是我已经尝试过的:
- 我首先想到的是对该文件夹 (GoogleData) 授予读/写权限,所以我这样做了,但仍然出现同样的错误。
- 我还要求 Arvixe 支持团队授予对该文件夹的Everyone-Full Control 访问权限(他们说他们已经这样做了,但不确定)
- 我也尝试删除 FileDataSource 参数并使用 GoogleWebAuthorizationBroker.Folder,但同样的错误。
- 我已经阅读了所有的 Google 示例和代码,但它们都是针对控制台或桌面应用程序的,而且我有一个带有 Web 服务器的 Web 应用程序。
请您给予我们任何帮助,我们将不胜感激! 再次感谢 !
【问题讨论】:
-
有完全相同的问题。我们运行自己的服务器(我无权访问它们)。在 Visual Studio 设置为 IIS Express 的本地机器上工作,但在我们的开发服务器(与我们的实时服务器重复)上给出完全相同的错误。起初我还以为是 FileDataStore,我找到了一个我实现的 DatabaseDataStore 的示例(github.com/LindaLawton/Google-Dotnet-Samples/blob/master/…)。仍然没有成功,但消除了任何文件权限问题。
-
我怀疑它与用户权限有关,而不是文件夹/文件权限。我无法对此进行测试,因为我没有直接访问服务器的权限,现在需要获得进行更改的许可,因此不会很快发生。而且我不确定该要求系统管理员做什么。这个答案让我走上了这条路:stackoverflow.com/questions/14194146/…。但它与服务有关。
-
嘿!这里有一些进展:1)使用VS在您的本地主机上运行项目2)Google.Apis所需的文件是在您映射的文件夹(在我的情况下为app_data / GoogleData)中使用令牌创建的。 3) 将该文件复制到生产站点的同一文件夹中。它会起作用,但我正在测试令牌是否自动更新。但问题是创建文件!
标签: asp.net webforms oauth-2.0 youtube-api