如何在Google教室中实施OAuth

时间:2015-08-18 11:16:46

标签: google-oauth google-classroom

目前我正在使用谷歌课堂API将课堂整合到我的.NET产品中。我正在使用以下方法对用户进行身份验证。我的问题是当我执行此代码时它首次要求身份验证但是当我执行此代码时时间它直接登录为以前的登录凭证。当我在很多天后尝试这个,许多浏览器也直接登录为第一个经过身份验证的用户。但是对于每个新的时间执行代码,我希望它要求用户身份验证而不是直接登录以前的用户凭证。如何实现这一目标......? 我是这个OAuth和API的新手。你的宝贵答案将对我的团队有很大帮助。

请任何人帮助我...

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;
        }

1 个答案:

答案 0 :(得分:0)

即使您没有传入数据存储对象,默认情况下,该库也会将用户的凭据存储在li { text-align: center; } 中。如果您根本不想存储身份验证信息,而是让用户在每次运行时授权应用程序,那么您需要传入一个实际上并不存储的自定义数据存储对象凭证:

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); } } 方法:

AuthorizeAsync()