2015-12-29 3 views
0

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

Это сводится к нескольким запросам, однако я не могу пройти мимо их этапа аутентификации.

They say to do this

curl -X "GET" "https://api.sendgrid.com/v3/templates" -H "Authorization: Bearer Your.API.Key-HERE" -H "Content-Type: application/json" 

И используя камень Rest-клиент, который я пытаюсь сделать запрос на проверку подлинности, как так ...

username = 'username' 
api_key = 'SG.MY_API_KEY' 
key = Base64.encode64(username + ":" + api_key) 
headers = {"Authorization" => "Bearer #{key}", "Content-Type" => "application/json"} 
response = RestClient.get 'https://api.sendgrid.com/v3/templates', headers 

который возвращает ...

RestClient::Unauthorized: 401 Unauthorized: {"errors":[{"field":null,"message":"authorization required"}]} 

Конечная цель using their API is to add contacts.

Как я могу неправильно получить запрос?

+0

'RestClient.get 'https://api.sendgrid.com/v3/templates', {: content_type =>: JSON}, {: Authorization => "Знаменосец # ​​{api_key}"}' –

+0

'ArgumentError: неправильное количество аргументов (3 для 1..2)' – user2101461

+0

Ваш код выглядит нормально. Вы определенно настроили этот ключ API, чтобы иметь право использовать необходимые API в настройках [Настройки отправки] (https://app.sendgrid.com/settings/api_keys)? – mikej

ответ

2

Я закончил тем, что понял. На будущее, вот код, который работал ...

require 'rest_client' 
api_key = 'YOUR_API_KEY' 
headers = {'Authorization' => "Bearer #{api_key}"} 
data = {:email => '[email protected]'} 
response = RestClient.post 'https://api.sendgrid.com/v3/contactdb/recipients', [data].to_json, headers 
+0

Спасибо, что это было полезно, я думаю, что если вы хотите добавить несколько контактов, вы можете иметь это, как эти данные = [{: email => '[email protected]'}, {: email => 'email2 @ website. com '}] и удалите [] из [data] .to_json. Итак, как вы можете добавить их в определенный список –

0

Чтобы добавить маркетинговые контакты на SendGrid счет через API, смотрите документацию на https://sendgrid.api-docs.io/v3.0/contacts-api-recipients/add-recipients

Вы можете увидеть пример кода в «коде генерация "страницы.

require 'uri' 
require 'net/http' 

url = URI("https://api.sendgrid.com/v3/contactdb/recipients") 

http = Net::HTTP.new(url.host, url.port) 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

request = Net::HTTP::Post.new(url) 
request["authorization"] = 'Bearer <<YOUR_API_KEY>>' 
request["content-type"] = 'application/json' 
request.body = "[{\"email\":\"[email protected]\",\"first_name\":\"\",\"last_name\":\"User\",\"age\":25},{\"email\":\"[email protected]ple.com\",\"first_name\":\"Example\",\"last_name\":\"User\",\"age\":25}]" 

response = http.request(request) 
puts response.read_body