C# 如何使用API调用从google教室获取教室?

C# 如何使用API调用从google教室获取教室?,c#,asp.net-mvc,asp.net-web-api,google-api,google-oauth,C#,Asp.net Mvc,Asp.net Web Api,Google Api,Google Oauth,因此,我正在尝试将我的课程从我的google教室提取到我的应用程序中: 这是我的谷歌网址: var Googleurl = "https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=" + googleplus_redirect_url + "&prompt=consent&response_type=code&client_id=" + googleplus_client_id + "&scope=ht

因此,我正在尝试将我的课程从我的google教室提取到我的应用程序中: 这是我的谷歌网址:

var Googleurl = "https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=" + googleplus_redirect_url + "&prompt=consent&response_type=code&client_id=" + googleplus_client_id + "&scope=https://www.googleapis.com/auth/userinfo.profile+https://www.google.com/m8/feeds/+https://www.googleapis.com/auth/drive+https://www.googleapis.com/auth/drive.appdata+https://www.googleapis.com/auth/drive.file+https://www.googleapis.com/auth/drive.metadata+https://www.googleapis.com/auth/classroom.courses+https://www.googleapis.com/auth/classroom.profile.emails+https://www.googleapis.com/auth/classroom.profile.photos+https://www.googleapis.com/auth/classroom.rosters+https://www.googleapis.com/auth/classroom.rosters.readonly&access_type=offline";
在此之后,我通过以下方式请求访问代码:

 HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://accounts.google.com/o/oauth2/token");
                    webRequest.Method = "POST";
                    Parameters = "code=" + code + "&client_id=" + googleplus_client_id + "&client_secret=" + googleplus_client_sceret + "&redirect_uri=" + googleplus_redirect_url + "&grant_type=authorization_code";
                    byte[] byteArray = Encoding.UTF8.GetBytes(Parameters);
                    webRequest.ContentType = "application/x-www-form-urlencoded";
                    webRequest.ContentLength = byteArray.Length;
                    Stream postStream = webRequest.GetRequestStream();
                    // Add the post data to the web request
                    postStream.Write(byteArray, 0, byteArray.Length);
                    postStream.Close();

                    WebResponse response = webRequest.GetResponse();
                    postStream = response.GetResponseStream();
                    StreamReader reader = new StreamReader(postStream);
                    string responseFromServer = reader.ReadToEnd();

                    GooglePlusAccessToken serStatus = JsonConvert.DeserializeObject<GooglePlusAccessToken>(responseFromServer);
此代码返回类型为System.Net.WebException:{“远程服务器返回错误:(403)禁止。”}


我使用了相同的access_令牌来获取所有其他作用域,如mu Googleurl中的scopes参数所示。但是,即使我添加了相应的作用域,我也无法访问我的类。

显然,要使用与google教室相关的功能,我们需要启用google教室Api。听起来很傻,但我对此一无所知(因为我已经启用了谷歌Api服务)。只需激活教室api,代码就可以正常工作

 string p="https://classroom.googleapis.com/v1/courses";
 string auth = "Bearer "+access_token;
 private bool GetClasses(string p,string auth)
    {
        using (var client = new WebClient())
        {
            var uri = new Uri(p);
            //client.DefaultRequestHeaders.Authorization=new AuthenticationHeaderValue("Bearer", auth);
            string req="Authorization: "+ auth;
            client.Headers.Add(req);

            var response = client.DownloadString(uri);

        }

        return true;
    }