Google 控制台 API 的 OAuth 问题

OAuth issues with Google Console API

我希望有人能帮助我获得 google API.
的授权 这是我正在尝试使用的代码,

   var credentials = await GoogleWebAuthorizationBroker.AuthorizeAsync(secrets, new string[] { WebmastersService.Scope.Webmasters }, "user", CancellationToken.None);

如果我在本地尝试,我会收到(预期的)无法从此 localhost/authorize url 连接。 如果我从部署的站点尝试它,它会超时并给出 502

有什么建议吗? 提前致谢

我在 OAuth2 操场上取得了成功,但不确定我在这里遗漏了什么。

GoogleWebAuthorizationBroker.AuthorizeAsync 设计用于已安装的应用程序。它会在代码 运行 所在机器的浏览器上生成同意屏幕。如果您尝试部署,这将尝试在服务器上打开同意屏幕,但该屏幕不起作用。

服务帐号

这是对这个问题的其他答案的回应。

如果您打算使用服务帐户,我建议您使用 .json 密钥文件而不是 p12,因为 google 正在取消 p12 文件

GoogleCredential credential;
using (var stream = new FileStream(serviceAccountCredentialFilePath, FileMode.Open, FileAccess.Read))
{
     credential = GoogleCredential.FromStream(stream).CreateScoped(scopes);
                }

                

玩了这么久,我终于用下面的代码让它工作了: 非常感谢您帮助我了解发生了什么。

 var serviceAccountEmail = "matrixtools-argos@matrixtools-argos.iam.gserviceaccount.com";

            var certificate = new X509Certificate2(@"C:\Users\key.p12", "notasecret", X509KeyStorageFlags.Exportable);

            var credentials = new ServiceAccountCredential(
                        new ServiceAccountCredential.Initializer(serviceAccountEmail)
                        {
                            Scopes = new[] { WebmastersService.Scope.WebmastersReadonly }
                        }.FromCertificate(certificate));