1

目前我正在研究谷歌教室 API 以将教室集成到我的 .NET 产品中。我的问题是,当我执行此方法时,它第一次要求身份验证,但是当我下次执行此代码时,它直接作为以前的登录凭据登录。甚至我更改了另一个(第二个)域的client_secret.json,它也直接作为第一个域认证用户登录。我的要求是当我在运行时在代码中动态更改client_secret.json文件时,它将直接作为这个client_secret的域用户登录.json 文件而不是 client_secret.json 文件的先前域用户。这可能吗?如果是,我该如何实现这一点。请任何人对此提供帮助。

private ClassroomService getservice()
    {
        using (var stream =
          new FileStream(Server.MapPath("client_secret.json"), FileMode.Open, FileAccess.Read))
        {
            string credPath = System.Environment.GetFolderPath(
               System.Environment.SpecialFolder.Personal);
            credPath = Path.Combine(credPath, ".credentials");

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

1 回答 1

1

client_secret.json 文件包含特定于应用程序的凭据,而不是特定于用户或域的凭据。更改 client_secret.json 文件不是登录/注销用户的正确方法。相反,您需要使用FileDataStore具有不同路径的 a 。

于 2015-09-04T12:03:56.283 回答