为什么我得到系统.UnauthorizedAccessException访问路径';谷歌.Apis.Auth

本文关键字:谷歌 Apis Auth 路径 系统 访问 UnauthorizedAccessException 为什么 | 更新日期: 2023-09-27 18:01:00

我已经实现了用于文件管理的谷歌驱动器功能,它在本地系统中运行良好,但每当我在Godaddy服务器上托管它时,它都会抛出以下错误

系统。未授权访问异常访问路径"谷歌"。Apis。"身份验证"被拒绝。

以下代码我正在使用:

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
   new ClientSecrets
   {
       ClientId = System.Configuration.ConfigurationManager.AppSettings["GDriveClientId"],//Get ClientID from web.config.
       ClientSecret = System.Configuration.ConfigurationManager.AppSettings["GDriveClientSecret"]//Get ClientSecret from web.config.
   },
   new[] { DriveService.Scope.Drive },
   System.Configuration.ConfigurationManager.AppSettings["GDriveCreatedByUser"],//Get UserName from web.config.
   CancellationToken.None).Result;
return credential;

我使用VS2010,IIS 7实现上述功能

为什么我得到系统.UnauthorizedAccessException访问路径';谷歌.Apis.Auth

扩展Chandrika已经说过的,ASP。NET用户需要对Google API客户端OAuth2库的永久存储文件夹具有读写权限。

它的默认值是Environment.SpecialFolder.ApplicationData中名为"Google.Apis.Auth"的文件夹(通常对应于C:'Users'your-user-name'AppData'Roaming(。

或者,可以提供另一个文件夹作为GoogleWebAuthorizationBroker.AuthorizeAsync()方法的最后一个参数:

var folder = System.Web.HttpContext.Current.Server.MapPath("/App_Data/MyGoogleStorage");
UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
   new ClientSecrets
   {
       ClientId = "PutYourClientIdHere",
       ClientSecret = "PutYourClientSecretHere"
   },
   new[] { DriveService.Scope.Drive },
   "user",
   CancellationToken.None,
   new FileDataStore(folder)).Result;
return credential;

请参阅:https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth#credentials和https://developers.google.com/accounts/docs/OAuth2

问题的根本原因:生成此问题是因为在验证身份验证请求后,它在窗口的用户文件夹中的创建目录和令牌文件我们没有正确的Godaday服务器的文件夹,所以它不工作

解决方案:修改了在我们的目录中创建该文件的谷歌api[filedatasource.cs]的源代码,并添加了它的引用,它将在中工作

我想你会在这里找到一个解决方案:部署ASP。NET到Windows Azure云,应用程序在云上运行时出错。

您只需要将IIS配置为使用FileDataStore即可。

以下是从那里的答案中复制的:

A。如果你有RDP访问Azure云,则更改IIS设置

1.Go to the IIS
2.Under sites select the Default site
3.Add Permission
4.choose I_User object and give read/write access.
5.later you can automate this setting using a batch file and startup task.

B。我认为你在使用任何本地路径。对于临时需求,您应该将其更改为本地存储,对于长期需求,应该将其改为blob存储。