Я использую ruby для создания скрипта, который будет отправлять электронную почту каждый раз, когда возникает ошибка, используя gem 'gmail'
.
Я планирую отправить его с учетной записью Gmail. Однако я бы не стал использовать аутентификацию LOGIN или PLAIN для предоставления доступа к SMTP-запросу.
Таким образом, Google предоставляет мне возможность использовать OAuth для аутентификации.
Проблема в том, что у меня нет клиентской стороны. Поэтому мне понадобится часть моего скрипта для отправки запроса в API Google, который в свою очередь предоставит мне токен для подключения к моей учетной записи Gmail и отправки почты.
gem 'spreadsheet'
gem 'gmail'
gem 'mail'
gem 'csv'
gem 'google-api-client', '~> 0.7.1'
require 'spreadsheet'
require 'csv'
require 'mail'
require 'gmail'
require 'google/api_client/client_secrets'
require_relative 'gmail_manager'
def run
#some code runs here
# if an expception is raised:
error_mail(filename, e)
end
def error_mail(filename, exception)
client_secrets = Google::APIClient::ClientSecrets.load('client_secrets.json')
auth_client = client_secrets.to_authorization
**#this is where I get stuck, am i supposed to do a POST request?
auth_client.code = auth_code (is nil)
auth_client.fetch_access_token! (doesn't work because code is nil)
gmail = Gmail.connect(:xoauth2, "my@gmail.com", "TOKEN I DON'T HAVE")
gmail.deliver do
to "my@gmail.com"
from "my@gmail.com"
subject "The file #{filename} failed to convert"
html_part do
content_type 'text/html; charset=UTF-8'
body "<p>Good day,</p>
<p>content</p>
end
end
gmail.logout
end
run
Это мой файл client_secrets.json, в котором у меня есть идентификатор клиента и секрет клиента (я не уверен насчет redirect_uri
, потому что у меня нет клиентской стороны или auth_uri
, какой это должно быть? )
{
"web": {
"client_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"client_secret": "XXXXXXXXXXXXXXXXXX",
"redirect_uris": ["http://localhost:8080"],
"auth_uri": "'https://accounts.google.com/o/oauth2/auth'",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"scope": "https://gmail.com"
}
}
Я пытаюсь выполнить следующие шаги https://developers.google.com/identity/protocols/OAuth2WebServer
но я застреваю на шаге 2.