目次


連載 Domino V10 アプリ開発 #鬼わか 解説

第 7 回「Notesから認証を介してREST APIを発行してみよう (1) #鬼わか 解説」

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: 連載 Domino V10 アプリ開発 #鬼わか 解説

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:連載 Domino V10 アプリ開発 #鬼わか 解説

このシリーズの続きに乞うご期待。

1

はじめに

連載 「Domino V10 アプリ開発 #鬼わか 解説」のページにアクセスいただき、ありがとうございます。 前回は Notes アプリケーションから REST API を発行して郵便番号検索を行いました。 郵便番号検索サイトへのアクセスは認証に関する処理が不要でしたが、今回の記事では、認証が必要なサイトへ Notes アプリケーションからアクセスし、情報の取得を試してみたいと思います。

2

Twitter の投稿を取得する

今回は「oniwaka9」という Twitter アカウントを用意しました。 LotusScript からREAT API を発行し、oniwaka9 の最新のツイートを取得してみたいと思います。まず事前準備として、以下を行って下さい。

  • ツイッターアカウントの準備
  • developer アカウント申請
  • Twitter アプリケーションの登録
  • Twitter アプリケーションの Bearer トークンを取得し記録。(ツイート取得の際の認証に使用します)

(注) developer アカウント申請とアプリケーション登録、及び Bearer トークン取得の詳しい手順は、Twitter 開発者用公式サイトや申請手順を公開している情報をご参照ください(この記事では省略しています)。 筆者の申請は承認が下りるまでに Twitter 側とのやりとりが数往復、1週間ほどの時間がかかりました。ご参考までに。

これが oniwaka9 の最新のツイートです。

 

Notesデータベースにフォームを用意しました。「Get Tweet」ボタンを押してみます。

 

テキストフィールドにツイートの内容が取得されました。

 

前回の記事を読まれた皆様は、「Get Tweet」ボタンクリック時に REST API を発行していることがお分かりになっているかと思います。前回との相違点は、Bearer トークンを使って oniwaka9 のアプリケーションに認証を行っているところです。

それではソースコードを見ていきましょう。重要なポイントは、Setheaderfield メソッドを使ってヘッダーに Bearer トークンの値を渡している箇所になります。(コードの簡略化のため、エラーハンドリングなどは省いています)

最初に oniwaka9 の最新のツイートを JSON 形式で取得します。

    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim session As New NotesSession
    Dim http As NotesHTTPRequest
    Dim textResult As String
    Dim url As String
    Dim returnValue As Variant
    
    Set uidoc = ws.CurrentDocument
    
     'HTTP セッション開始
    Set http = session.CreateHTTPRequest()
    
    ' ヘッダーに Bearerトークンをセット← New! この部分です。
    Call http.Setheaderfield("Authorization", "Bearer AAAAAAAAAAAAAAI(中略)LABeUvmZMUTflr7n36qNO1SsqGNGzjam283bg")
    
    'JSONをテキスト形式で返すための設定
    http.Preferstrings = True
    
    'HTTP Request を発行し、oniwaka9のツイートを1つGETする
    url = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=oniwaka9&count=1"
    returnValue = http.Get(url)

JSON を確認したい場合は、最終行に「Messagebox returnValue」を入れるとポップアップ表示されます。ちゃんと JSON 形式になっていますね。

 

ただし、これでは余分な情報が多くて分かりにくいので、JSON をパースしてツイート本文を抽出します。

  'JSON パースのための変数宣言
    Dim jsonNav As NotesJSONNavigator
    Dim jsonElement As NotesJSONElement
    Dim jsonElement2 As NotesJSONElement
    Dim jsonElement3 As NotesJSONElement
    Dim jsonArray As NotesJSONArray
    Dim jsonArrElem As NotesJSONElement
    Dim jsonObj As NotesJSONObject
   
    ' 返ってきたJSONに改行コードが入っていれば消去する
    json = Replace(Replace(returnValue, Chr(13), ""),Chr(10),"")
    
    ' JSON データを JsonNevigator 型にセットする
    Set jsonNav = session.CreateJSONNavigator(json)
    
    'text のデータを取得(ツイート本文は”text”に格納されている)
    Set jsonElement = jsonNav.GetFirstElement
    Set jsonObj =  jsonElement.Value
    Set jsonArrElem = jsonObj.GetElementByName("text")
    textResult = jsonArrElem.Value
    
    'Notesフォームのテキストフィールド「Tweet」に取得したツイート本文をセット
    Call uidoc.FieldSetText("Tweet", textResult)
    Call uidoc.Refresh()
3

おわりに

いかがでしたでしょうか。 (Twitter の developer 申請の手間を除けば) 非常に簡単に LotusScript から REST API 経由で Twitter 連携ができることがお分かりいただけたかと思います。 応用すればさまざまな外部サービスとの連携が可能になり、Notes アプリケーションの活用範囲が広がります。

次回は Slack への POST を試してみたいと思います。お楽しみに!


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=1065901
ArticleTitle=連載 Domino V10 アプリ開発 #鬼わか 解説: 第 7 回「Notesから認証を介してREST APIを発行してみよう (1) #鬼わか 解説」
publish-date=06062019