Мне нужно получить доступ к электронной таблице Google из моего веб-приложения. Это приложение для членства, которое записывает информацию о членах в электронную таблицу google. Когда я запускаю код локально, код ниже работает.
SpreadsheetsService service = new SpreadsheetsService(spreadsheetName);
service.setUserCredentials(USERNAME, PASSWORD);
Однако, когда я запускаю веб-приложение на сервере, аутентификация завершается с ошибкой.
Google.GData.Client.InvalidCredentialsException: Invalid credentials
at Google.GData.Client.Utilities.QueryClientLoginToken(GDataCredentials gc, String serviceName, String applicationName, Boolean fUseKeepAlive, IWebProxy proxyServer, Uri clientLoginHandler)
at Google.GData.Client.GDataGAuthRequest.QueryAuthToken(GDataCredentials gc)
at Google.GData.Client.GDataGAuthRequest.EnsureCredentials()
at Google.GData.Client.GDataRequest.EnsureWebRequest()
at Google.GData.Client.GDataGAuthRequest.EnsureWebRequest()
at Google.GData.Client.GDataRequest.Execute()
at Google.GData.Client.GDataGAuthRequest.Execute(Int32 retryCounter)
at Google.GData.Client.GDataGAuthRequest.Execute()
at Google.GData.Client.Service.Query(Uri queryUri, DateTime ifModifiedSince, String etag, Int64& contentLength)
at Google.GData.Client.Service.Query(FeedQuery feedQuery)
Я также получил это письмо от google:
Hi xxxxxx,
Someone recently used your password to try to sign in to your Google Account
[email protected]. This person was using an application such as an email client
or mobile device.
We prevented the sign-in attempt in case this was a hijacker trying to access
your account. Please review the details of the sign-in attempt:
Я знаю, что учетные данные верны, потому что они работают при локальном тестировании.
Я вижу много упоминаний OAuth для аутентификации. Проблема в том, что я не хочу использовать аутентификацию пользователя. Только мое веб-приложение должно быть разрешено писать в электронную таблицу, используя предоставленные мной учетные данные.
Я пошел по следующему URL-адресу, нажал на кнопку, и теперь все работает. Действительно странно, что этот шаг необходим.