为什么我得到系统.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实现上述功能
扩展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存储。