【问题标题】:Google oauth .net how can I get valid credential?Google oauth .net 如何获得有效的凭据?
【发布时间】:2016-11-30 07:49:36
【问题描述】:

我尝试从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();
    }

我做错了什么?

【问题讨论】:

  • 你有没有偶然发现这个有用的Quickstart
  • 是的,但是这个例子是控制台应用程序。我正在使用 asp.net mvc 和 OAuth。

标签: .net oauth gmail-api google-api-dotnet-client


【解决方案1】:

因此,如果没有更多信息,很难判断这里出了什么问题,但我遇到了同样的问题,这就是我遇到的问题。

AppFlowMetadata 创建一个新的 GoogleAuthorizationCodeFlow 实例。这需要一个 Initializer 对象,并在该对象内定义用于存储令牌的 DataStore。

如果您没有定义该 DataStore,或者如果该 DataStore 中的某些内容无法正常工作以致无法存储令牌,则会导致凭证每次都返回 null 的这种行为。

所以我会开始检查您的 DataStore 是否配置正确。

【讨论】:

    【解决方案2】:

    正如你所说,你正在使用OAuth 2.0。有一个使用 OAuth 2.0 访问 Google API 的基本模式。它遵循 4 个步骤:

    • 从 Google Developers Console 获取 OAuth 2.0 凭据。
    • 从 Google 授权服务器获取访问令牌。
    • 将访问令牌发送到 API。
    • 如有必要,请刷新访问令牌。

    更多详情,您可以按照这里的教程:https://developers.google.com/identity/protocols/OAuth2InstalledApp#handlingtheresponse

    您必须访问 Google Developers Console 以获取 OAuth 2.0 凭据,例如 Google 和您的应用程序都知道的客户端 ID 和客户端密码

    除了@Tholle 的答案,请通过Official Google Document。只需完成页面其余部分中描述的步骤,大约五分钟后,您将拥有一个向 Gmail API 发出请求的简单 .NET 控制台应用程序。

    【讨论】:

    • 嘿伙计,这是一个非常糟糕的答案。 Guy 在 Google 的示例之后遇到了问题,您给他一些通用信息和不相关的链接(“已安装应用程序”的教程在 MVC 应用程序的情况下是无用的 - 他使用了官方文档)
    • 这不是一个建设性或有用的答案——“只是阅读文档”没有帮助
    猜你喜欢
    • 2013-06-08
    • 2014-01-07
    • 2014-09-13
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2011-12-09
    • 2011-05-09
    相关资源
    最近更新 更多