我尝试从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();
}
我做错了什么?
答案 0 :(得分:0)
因此,如果没有更多信息,很难分辨出这里出了什么问题,但我遇到了同样的问题,这就是导致它出现的原因。
AppFlowMetadata创建了GoogleAuthorizationCodeFlow的新实例。这将获取一个Initializer对象,并在该对象中定义DataStore以存储标记。
如果您没有定义DataStore,或者某些内容在该数据存储区内无法正常工作以使令牌未被存储,则会导致此行为,即凭据每次都返回null
所以我会开始检查你的DataStore是否配置正确。
答案 1 :(得分:-1)
正如您所说,您正在使用OAuth 2.0。使用OAuth 2.0访问Google API的基本模式。它遵循4个步骤:
有关详细信息,请按照此处的教程进行操作:https://developers.google.com/identity/protocols/OAuth2InstalledApp#handlingtheresponse
您必须访问Google Developers Console才能获取OAuth 2.0凭据,例如Google和您的应用程序都知道的客户端ID和客户端密码
除@Tholle回答外,请浏览Official Google Document。只需完成页面其余部分中描述的步骤,大约五分钟后您就会有一个简单的.NET控制台应用程序向Gmail API发出请求。