生成令牌时拒绝Google API授权访问权限

时间:2016-10-11 13:46:55

标签: asp.net-mvc google-oauth azure-web-sites google-authentication drive

我在生成令牌时遇到了谷歌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网站中。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

  

代码在本地计算机上运行良好,但发布版本提供“访问被拒绝”错误。

将Web应用程序部署到Azure网站后,我遇到了同样的问题。

enter image description here

我从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应用程序。我知道不是直接解决问题,这种方式可以避免它。希望它有所帮助。