我在生成令牌时遇到了谷歌API的一些问题。代码在本地计算机上运行良好,但发布版本提供了#34;访问被拒绝"错误。我知道必须与文件夹的权限相关,但我不知道如何解决它。实际上我们的授权功能是这样的:
public static DriveService AuthenticateOauth(string clientId, string clientSecret, string userName)
{
String folder = System.Web.HttpContext.Current.Server.MapPath("/App_Data/MyGoogleStorage/");
string[] scopes = new string[] { DriveService.Scope.Drive };
// here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets { ClientId = clientId, ClientSecret = clientSecret }
, scopes
, userName
, CancellationToken.None
, new FileDataStore(folder)).Result;
DriveService service = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Drive API",
});
return service;
}
该网站使用ASP NET MVC 5编写,并托管在Azure网站中。
感谢您的帮助。
答案 0 :(得分:0)
代码在本地计算机上运行良好,但发布版本提供“访问被拒绝”错误。
将Web应用程序部署到Azure网站后,我遇到了同样的问题。
我从this article引用“Web应用程序(ASP.NET MVC)”部分来获取用户Credential并使用DriveService,我发现它在Azure网站上运行良好。
答案 1 :(得分:0)
我最终决定只使用自己的驱动器帐户。所以我创建了一个令牌,我一直在使用它。我遵循了以下主题:
1.-为Google Drive API创建令牌:https://stackoverflow.com/a/19766913/4965910
2.-将Google API正确添加到MVC并使用我们的令牌: GoogleWebAuthorizationBroker in MVC For Google Drive Access
你必须小心,很容易陷入困境。
这只适用于具有一个驱动器帐户的ASP NET MVC应用程序。我知道不是直接解决问题,这种方式可以避免它。希望它有所帮助。