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));
我希望有人能帮助我获得 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));