【问题标题】:Always prompt user to select an account on application start始终提示用户在应用程序启动时选择一个帐户
【发布时间】:2019-06-03 15:18:37
【问题描述】:

我正在使用来自code samples 的代码在应用程序启动时对用户进行身份验证。

UserCredential credential;
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
        new[] { YouTubeService.Scope.Youtube },
        "user",
        CancellationToken.None,
        new FileDataStore(this.GetType().ToString())
    );
}

var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = this.GetType().ToString()
});

除了我想强制每次都显示“选择帐户”屏幕(现在它只显示第一次,然后记住用户)之外,一切正常,因为该应用程序应该允许不同的用户登录.

看起来我应该将prompt请求参数设置为select_account,但我不知道我应该怎么做,AuthorizeAsync方法不接受任何额外的参数。

【问题讨论】:

  • 如果您想允许不同的用户登录,我会考虑添加注销流程,而不是每次打开应用时都强制用户登录。这不是很人性化
  • OP 已经有了正确的解决方案。他需要使用 c# 库设置prompt=select_account。退出是不合适的
  • 是的,我只是不知道该怎么做:D
  • 我非常反对那些让简单的东西变得复杂的库。直接调用 OAuth 端点可能值得。就我个人而言,我觉得这更简单、更健壮。
  • 我只能讲述我自己第一次与 Google OAuth 争论的经历。我尝试使用库(Java 和 JS)作为阻力最小的明显路径,并且不断地被泄漏的抽象、版本地狱和过时的文档绊倒。只有当我开始直接调用端点时,事情才开始稳健地工作,并且以一种与我的特定用例一​​致的方式工作。向@chris 表示支持,因为他们的 PR 响应如此之快。

标签: c# youtube-api google-oauth google-api-dotnet-client


【解决方案1】:

您说得对,这目前无法以简单的方式完成。

我已经提交了一个错误来解决这个问题:https://github.com/googleapis/google-api-dotnet-client/issues/1322

【讨论】:

  • 酷,我看到你已经关闭了这个问题。我现在正在等待下一个版本?
  • v1.37.0 现已发布此修复程序。
  • 您需要使用GoogleWebAuthorizationBroker.AuthorizeAsync 的重载,它采用GoogleAuthorizationCodeFlow.Initializer。请参阅此处了解如何配置它:github.com/googleapis/google-api-dotnet-client/blob/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 2021-04-15
  • 2022-08-02
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
相关资源
最近更新 更多