読者です 読者をやめる 読者になる 読者になる

Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

SendGrid Web API V3をUnirest for Javaでコールする -認証-

SendGrid Unirest sendgrid-java

SendGrid Web API V3では認証方法が増えて、ベーシック認証やAPIキーを利用することができるみたいです。

API v3 Overview - SendGrid Documentation | SendGrid

f:id:kikutaro777:20150720193244j:plain

先日使ってみたHTTPクライアントライブラリのUnirest for Javaは、元々このAPI叩くために触ってました(^^;
全然利用例を書いていないのにはてブのったりして焦りました…。kikutaro777.hatenablog.com

Basic認証

SendGridで登録したユーザとパスワードをコロンでつなげてBase64で変換します。
例えば、ユーザが「Aladdin」でパスワードが「open sesame」の場合は「Aladdin:open sesame」をBase64で変換します。

今回は次のWebサイト使って変換しました。

www.base64encode.org
f:id:kikutaro777:20150720231241j:plain

ちなみにAladdinとopen sesameはUSのWikipediaのBasic認証の解説ページからでした(^^;
Basic access authentication - Wikipedia, the free encyclopedia

ここまで準備できたら、あとは次のように呼び出すだけ。

HttpResponse<JsonNode> ret = Unirest.get("https://api.sendgrid.com/v3/templates")
                .header("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==")
                .asJson();
System.out.println(ret.getBody());

SendGridではメールのひな形(テンプレート)を作れるのですが、それを取得するものです。
結果はJSONで次のような情報が返ってきます。

{
    "templates": [
        {
            "id": "8832dabe-3515-47ac-a06d-f8852970556a", 
            "name": "kikutaro_template", 
            "versions": [
                {
                    "active": 1, 
                    "id": "37268f35-0ed2-4c55-bf1a-593a677b7f43", 
                    "name": "kikutaro_template Version 1", 
                    "subject": "<%subject%>", 
                    "template_id": "8832dabe-3515-47ac-a06d-f8852970556a", 
                    "updated_at": "2015-07-18 10:23:53"
                }
            ]
        }
    ]
}

今回はテンプレートを全て取得するものでしたが、基本的にREST形式となっていて

  • 全てのテンプレートを取得
  • テンプレートIDを指定して一本引き
  • テンプレートの作成(POST)
  • テンプレートの編集(PATCH)
  • テンプレートの削除(DELETE)

などの操作がAPIからできます。この辺はまた別途使っていきたい。

なお、UnirestではBASIC認証に対応していて、次のように書くこともできます。

HttpResponse<JsonNode> ret = Unirest.get("https://api.sendgrid.com/v3/templates")
                .basicAuth("Aladdin", "open sesame")
                .asJson();
System.out.println(ret.getBody());

APIキーによる認証

APIキーについてはKKEのブログに日本語で詳しく解説されてますので、ここでは解説を飛ばします。

APIキー認証でセキュリティを強化しよう | ブログ | SendGrid

次のように書けます。

HttpResponse<JsonNode> ret = Unirest.get("https://api.sendgrid.com/v3/templates")
                .header("Authorization", "Bearer SG.xxxxxxxxxxxxxxx.yyyyyyyyyyyyyyyyyyyyyyy")
                .asJson();
System.out.println(ret.getBody());

認証ができてしまえば、色々API叩けるので遊べそうです。

にほんブログ村 IT技術ブログへ
にほんブログ村
にほんブログ村 IT技術ブログ Javaへ
にほんブログ村