Я работаю над отправкой объекта JSON в Google Sheet в ASP.NET.
- Чтобы получить доступ к закрытому листу Google, мне сначала нужно реализовать OAuth2.0 и получить токен доступа. Но нужно ли сохранять его локально в моем приложении или он неявно пересылается при запросе API-интерфейсов Google листов?
- Нужно ли передавать в заголовке запроса секрет клиента, ключ API и идентификатор клиента? Если так, какой правильный синтаксис для каждого. Например, 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 ().