使用域名使用gmail outh2时无法打开权限页面,但在使用localhost VS 2017时工作正常

时间:2018-06-15 10:12:17

标签: c# google-api gmail-api

我是outh2 gmail api的新用户。当我创建Web Api并尝试运行时,我可以在按钮单击时重定向到gmail权限页面。 但是在iis中托管并创建域名后,我无法重定向到gmail的权限页面。

以下是代码部分:

private GmailService GmailServices()          {    
 UserCredential credential;    
 GmailService service = new GmailService();
 string GmailCredentialLocation = System.Web.HttpContext.Current.Request.MapPath("~\\GmailClientDetails.json");
 using (var stream =
             new FileStream(GmailCredentialLocation, FileMode.Open, FileAccess.Read))
            {
                string credPath = System.Environment.GetFolderPath(
                    System.Environment.SpecialFolder.Personal);
                credPath = Path.Combine(credPath, ".credentials");

                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    UserId,
                    CancellationToken.None,
                    new FileDataStore(credPath, true)
                    ).Result;
            }
            service = new GmailService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });
            SetUserSub(UserId);
            SendMail();
        }
        return service;
    } 

在域上运行时,即使尝试调试

,我也没有收到任何错误
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(   
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    UserId,
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;

这个代码部分它会回到域并且域缓冲继续进行

任何建议都会有所帮助

1 个答案:

答案 0 :(得分:0)

根据官方文档Using OAuth 2.0 for Web Server Applications,当您在API控制台的Credentials page上为OAuth client ID类型创建Web application时(获取{ {1}}档案

请注意:

  

使用PHP,Java,Python等语言和框架的应用程序   Ruby, .NET必须指定授权的重定向URI 。重定向   URI是OAuth 2.0服务器可以发送的端点   响应。

我希望您只使用localhost设置您的凭据 - 作为授权的重定向URI - 因此,如果您将您的域URI 添加到授​​权的重定向URI,指定引用您的域的URI ,然后重新生成 client_secret.json 它会起作用。