【问题标题】:How to implement OAuth in google classroom如何在谷歌课堂中实现 OAuth
【发布时间】:2015-08-18 11:16:46
【问题描述】:

目前我正在研究谷歌教室 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;
        }

【问题讨论】:

  • 第一次运行上述示例代码时,凭据存储在路径(Server.MapPath("client_secret1.json")中,因此,在第二次登录时,它只是获取凭据从这里。只需从路径中删除凭据文件或撤销令牌(developers.google.com/identity/protocols/OAuth2WebServer)

标签: google-oauth google-classroom


【解决方案1】:

即使您不传入数据存储对象,默认情况下库也会将用户的凭据存储在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()方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多