如何在 google 课堂中实施 OAuth

How to implement OAuth in google classroom

目前我正在 google 教室 API 将教室整合到我的 .NET product.I 我正在使用下面的方法进行身份验证 user.My 问题是当我执行这个编码它第一次询问身份验证但是当我下次执行此代码时它直接登录作为以前的登录 credentials.When 我在很多天后尝试这个并且许多浏览器也直接登录作为第一次身份验证 user.But每次新执行代码时,我都希望它要求对用户进行身份验证,而不是直接以以前的用户身份登录 credentials.How 来实现这一点......? 我是这个 OAuth 的新手,API's.Your 有价值的答案将对我的团队有很大帮助。

请任何人帮助我...

private ClassroomService getservice()
        {
            using (var stream =
              new FileStream(Server.MapPath("client_secret1.json"), FileMode.Open, FileAccess.Read))
            {

                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                      CancellationToken.None).Result;
            }
            var service = new ClassroomService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });
            return service;
        }

即使您不传入数据存储对象,默认情况下库也会将用户的凭据存储在 C:\Users\%USERNAME%\AppData\Roaming\Google.Apis.Auth\ 中。如果您根本不想存储身份验证信息,而是让用户在每个 运行 上授权应用程序,您需要传入一个实际上不存储凭据的自定义数据存储对象:

class NullDataStore : IDataStore
{
    public Task StoreAsync<T>(string key, T value) 
    {
        return Task.Delay(0);
    }

    public Task DeleteAsync<T>(string key)
    {
        return Task.Delay(0);
    }

    public Task<T> GetAsync<T>(string key)
    {
        return Task.FromResult(default(T));
    }

    public Task ClearAsync()
    {
        return Task.Delay(0);
    }

}

然后将此 class 的实例传递给 AuthorizeAsync() 方法:

credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
    GoogleClientSecrets.Load(stream).Secrets,
    Scopes,
    "user",
    CancellationToken.None,
    new NullDataStore()).Result;