是否有办法检查用户是否已经登录?
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);
}
数据存储用户凭证