как получить количество отправленных писем из моей учетной записи с помощью API Gmail?

Я использую gmail api в моем приложении rails для отправки электронных писем. пользователь может аутентифицироваться в Google и отправлять электронные письма (он будет запрашивать согласие пользователя. после утверждения пользователя он может отправлять электронные письма со своей учетной записи)

Мое требование - я хочу показать зарегистрированному пользователю, сколько писем было отправлено с его идентификатора электронной почты в моем приложении rails. для этого я использую конечную точку ниже. но я получаю сообщение об ошибке

require 'net/http'
require 'uri'

in controler

def sent_email_count
_
    api_key = "api_key_contains_smal_case_capital_case_letters_and_special_symbols"
     uri = URI.parse("https://www.googleapis.com/gmail/v1/users/#{current_user.email}/messages?labelIds=SENT&q=newer_than%3A1d&key={api_key}")
     @gmail_response = Net::HTTP.get_response(uri)

end

in views :-

response <%= @gmail_response >

но получаю несанкционированную ошибку.

количество отправленных писем: - #Net :: HTTPUnauthorized: 0x00007f6f5e3e2158

Я тоже пробовал, как показано ниже. но он не работает. (изменения строковой интерполяции для ключа api)

uri = URI.parse("https://www.googleapis.com/gmail/v1/users/#{current_user.email}/messages?labelIds=SENT&q=newer_than%3A1d&key=#{api_key}")
     @gmail_response = Net::HTTP.get_response(uri)
     
     
uri = URI.parse("https://www.googleapis.com/gmail/v1/users/#{current_user.email}/messages?labelIds=SENT&q=newer_than%3A1d&key=api_key")
     @gmail_response = Net::HTTP.get_response(uri)

Может кто-то помочь мне с этим


person John    schedule 03.12.2020    source источник
comment
Согласие на отправку электронного письма не обязательно дает разрешение на запрос данных учетной записи пользователя. Я бы проверил API Gmail и посмотрел, какие разрешения требуются. В качестве альтернативы вы можете записывать электронные письма, отправленные через ваше приложение, в таблицу базы данных.   -  person dbugger    schedule 03.12.2020


Ответы (1)


Отвечать

В вашем коде отсутствует токен, поэтому ваши запросы HTTP 401 неавторизованы, я настоятельно рекомендую вам использовать Краткое руководство по официальной документации В вашем случае вы должны использовать list_user_messages.

Прежде всего перечислите все сообщения, используя параметр q как in: sent, что означает прочтите все отправленные сообщения из моего Gmail, а затем подсчитайте свой массив сообщений. Вот пример:

# ...
# Previous quickstart code

user_id = "[email protected]"
result = service.list_user_messages(user_id=user_id, q="in:sent")
puts "count : #{result.messages.length()}\n\n"

Ссылка

Ruby Google API Client

Метод: users.messages.list

person Jose Vasquez    schedule 03.12.2020