将PUT HttpWebRequest发送到Google Sheets API

时间:2018-10-26 20:03:13

标签: asp.net google-sheets httpwebrequest google-sheets-api

我正在将JSON对象推送到ASP.NET中的Google表格中。

  • 为了访问私有的Google表格,我首先需要实现OAuth2.0并检索访问令牌。但是我是否需要将其保存在本地应用程序中,还是在查询Google Sheets api时隐式发送?
  • 是否需要在请求标头中传递客户端密钥,api密钥和客户端ID?如果是这样,每种的正确语法是什么。例如。 apikey是“密钥”。

我已经阅读并重新阅读了文档,但是我仍然不确定在响应方法中需要传递什么(如下所示)。

到目前为止,这是我所拥有的:

Default.aspx.cs:

string requestUrl = string.Format(@"https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/Sheet1!C2:D5?valueInputOption=USER_ENTERED&key={apiKey}");
 JToken jTknRequests = GoogleSheetsAPI.PutWebJObject(requestUrl)["data"];

GoogleSheetsAPI.cs:

public static JObject PutWebJObject(string url, bool encapsulate = true)
{
    string stringResponse = PutWebResponse(url);

    if (encapsulate)
    {
        stringResponse = "{\"data\":" + stringResponse + "}";
    }
    JObject o = JObject.Parse(stringResponse);
    return o;
}

public static string PutWebResponse(string url)
{
    string stringResponse;

    HttpWebRequest httpWebRequest = (HttpWebRequest) WebRequest.Create(url);
    httpWebRequest.Method = WebRequestMethods.Http.Put;
    httpWebRequest.Accept = "application/json";

   // Do I need to send these?
   //httpWebRequest.Headers["access_token"] = ACCESS_TOKEN;
   //httpWebRequest.Headers["client_secret"] = CLIENT_SECRET ;

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
        string json = "{\"majorDimension\": \"ROWS\",\"range\": \"Sheet1!C2:D5\",\"values\": [[2,31],[5,6],[700000,8334],[3,4]]}";

        streamWriter.Write(json);
        streamWriter.Flush();
        streamWriter.Close();
    }

    HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        stringResponse = streamReader.ReadToEnd();
    }
    httpResponse.Close();
    return stringResponse;
}

现在,我收到错误401:GetResponse()方法未经授权。

0 个答案:

没有答案