【发布时间】: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