c# google oauth2检查认证状态



是否有办法检查用户是否已经登录?

this.userCredential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
clientSecrets.Secrets,
new[] { DriveService.Scope.DriveFile, emailScope, profileScope },
Globals.GetGDUserName(),
CancellationToken.None
);

我正在使用上面的代码来授权用户,但是如果没有人已经登录,它会自动提示用户选择帐户。

那么,有没有办法检查用户是否已经登录。

如果我把这段代码放在初始化函数中,它可能会提示用户,即使他不想,这就是为什么我在寻找一种方法来检查用户是否已经登录。

我确实找到了类似prompt = none的东西,但我如何在上面的代码中或以任何其他方式使用它?

GoogleAuthorizationCodeFlow.Initializer对象中,可以将提示参数设置为"none",并自定义进程,表示在用户尚未登录时不提示用户授权。除了;您可以使用令牌值来检查用户以前是否使用过该令牌。无论是否存在令牌,您都可以执行相关的事务。

var initializer = new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = clientSecrets.Secrets,
Scopes = new[] { DriveService.Scope.DriveFile, emailScope, profileScope },
DataStore = // Specify data store,
Prompt = "none"
};
var flow = new GoogleAuthorizationCodeFlow(initializer);
var token = await flow.LoadTokenAsync(userId);
if (token == null)
{
// User is not logged in - your code
this.userCredential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
clientSecrets.Secrets,
new[] { DriveService.Scope.DriveFile, emailScope, profileScope },
Globals.GetGDUserName(),
CancellationToken.None
);
}
else
{
// User is already logged in
this.userCredential = new UserCredential(flow, userId, token);
}

数据存储用户凭证

最新更新