Google oauth .net 我怎样才能获得有效的凭据?
Google oauth .net how can I get valid credential?
我尝试从 Google OAuth documentation 创建一个示例,但我无法获得有效的凭据。
在 OAuth 回调控制器中,我重写了 IndexAsync 方法。但是事件我有一个授权码。我的取消令牌每次都是假的。结果我没有 result.Credential
public override async Task<ActionResult> IndexAsync(AuthorizationCodeResponseUrl authorizationCode, CancellationToken taskCancellationToken)
{
var result = await new AuthorizationCodeMvcApp(this, new AppFlowMetadata()).
AuthorizeAsync(taskCancellationToken);
--> **result.Credential == null**
var service = new GmailService(new BaseClientService.Initializer
{
HttpClientInitializer = result.Credential,
ApplicationName = "ASP.NET MVC Sample"
});
UsersResource.LabelsResource.ListRequest request = service.Users.Labels.List("me");
IList<Label> labels = request.Execute().Labels;
var a = request;
return View();
}
我做错了什么?
如您所说,您正在使用 OAuth 2.0。有一个使用 OAuth 2.0 访问 Google API 的基本模式。它遵循 4 个步骤:
- 从 Google 开发人员控制台获取 OAuth 2.0 凭据。
- 从 Google 授权服务器获取访问令牌。
- 将访问令牌发送到 API。
- 如有必要,刷新访问令牌。
更多详细信息,您可以按照此处的教程进行操作:https://developers.google.com/identity/protocols/OAuth2InstalledApp#handlingtheresponse
您必须访问 Google 开发人员控制台以获取 OAuth 2.0 凭据,例如 Google 和您的应用程序
都知道的客户端 ID 和客户端密码
除了@Tholle 的回答外,请阅读Official Google Document。只需完成页面其余部分中描述的步骤,大约五分钟后,您将拥有一个向 Gmail API.
发出请求的简单 .NET 控制台应用程序
因此,如果没有更多信息,很难判断这里出了什么问题,但我遇到了同样的问题,这就是导致我出现问题的原因。
AppFlowMetadata 创建了一个新的 GoogleAuthorizationCodeFlow 实例。这需要一个 Initializer 对象,并在该对象中定义用于存储令牌的 DataStore。
如果您没有定义该 DataStore,或者如果该 Datastore 中的某些内容无法正常工作以致于无法存储令牌,则会导致这种行为,即每次凭据 returns null .
所以我会开始检查您的 DataStore 是否配置正确。
我尝试从 Google OAuth documentation 创建一个示例,但我无法获得有效的凭据。
在 OAuth 回调控制器中,我重写了 IndexAsync 方法。但是事件我有一个授权码。我的取消令牌每次都是假的。结果我没有 result.Credential
public override async Task<ActionResult> IndexAsync(AuthorizationCodeResponseUrl authorizationCode, CancellationToken taskCancellationToken)
{
var result = await new AuthorizationCodeMvcApp(this, new AppFlowMetadata()).
AuthorizeAsync(taskCancellationToken);
--> **result.Credential == null**
var service = new GmailService(new BaseClientService.Initializer
{
HttpClientInitializer = result.Credential,
ApplicationName = "ASP.NET MVC Sample"
});
UsersResource.LabelsResource.ListRequest request = service.Users.Labels.List("me");
IList<Label> labels = request.Execute().Labels;
var a = request;
return View();
}
我做错了什么?
如您所说,您正在使用 OAuth 2.0。有一个使用 OAuth 2.0 访问 Google API 的基本模式。它遵循 4 个步骤:
- 从 Google 开发人员控制台获取 OAuth 2.0 凭据。
- 从 Google 授权服务器获取访问令牌。
- 将访问令牌发送到 API。
- 如有必要,刷新访问令牌。
更多详细信息,您可以按照此处的教程进行操作:https://developers.google.com/identity/protocols/OAuth2InstalledApp#handlingtheresponse
您必须访问 Google 开发人员控制台以获取 OAuth 2.0 凭据,例如 Google 和您的应用程序
都知道的客户端 ID 和客户端密码除了@Tholle 的回答外,请阅读Official Google Document。只需完成页面其余部分中描述的步骤,大约五分钟后,您将拥有一个向 Gmail API.
发出请求的简单 .NET 控制台应用程序因此,如果没有更多信息,很难判断这里出了什么问题,但我遇到了同样的问题,这就是导致我出现问题的原因。
AppFlowMetadata 创建了一个新的 GoogleAuthorizationCodeFlow 实例。这需要一个 Initializer 对象,并在该对象中定义用于存储令牌的 DataStore。
如果您没有定义该 DataStore,或者如果该 Datastore 中的某些内容无法正常工作以致于无法存储令牌,则会导致这种行为,即每次凭据 returns null .
所以我会开始检查您的 DataStore 是否配置正确。