Because We Love Happy Coding

フリーライターからエンジニア × 講師。発信力だけあり余ってる感じ

kintoneから画像を受け取る際に大事なこと

今日もまたコーディング。だって僕らはHappy Codingが大好きだから。

kintoneから画像を受け取る

環境

ツールって大事

kintoneに添付した画像ファイルを PHPで表示する - Qiita
kintone REST APIの共通仕様 – cybozu developer network

kintoneからJavaScriptevent.recordをPOSTすれば画像データが入っているのかと思っていたけれど、どうもevent.recordに含まれているのはfileKeyだけみたい。逆にREST APIでダウンロードする形らしい。

これらの情報を参考に、JavaScriptPHPを書いたのだが、うまく動いてくれない。おかしいな。サーバーからのRESTのリクエストの投げ方が間違っているのかな。

KintoneのAPIをブラウザからURLで叩いてみても、ヘッダーの認証情報をつけていないので認証エラーになって蹴られて参考にならない。

それでは、とWindowsCURL.exeで、認証情報をつけてリクエストを投げてみたけれど、今度は戻りが文字化けしてしまい、エラーの内容が確認できない。

会社の先輩に教えてもあったのがこちら。

FireMobileSimulator for Google Chrome™ - Chrome ウェブストア

その結果、認証で蹴られていることがわかった。ちゃんとAPIトークン書いてるし、気をつけてコピペして間違ってないのになぜ……?

探し回って見つけた情報がこれだ。

kintone API のトークンを使った PHP コードの注意点 : logical error

超重要。APIトークンを「保存」しただけでは、APIトークンは有効化されていません。 「アプリを更新」ボタンを押して、初めて有効化されます。

酷いことに、公式のヘルプの手順には、「アプリを更新」を押せとは一言も書いてない。あんまりだ。

APIトークンを生成する - kintone ヘルプ

やっと認証されました。データもダウンロードできた。

まとめ

APIトークンの有効化

kintoneのREST APIにリクエストを投げて、

指定したAPIトークンは、アプリで生成されたトークンと異なります。アプリのAPIトークンの設定を確認してください。設定が正しい場合、APIトークンの設定がアプリに反映されていない場合があります。アプリの設定を更新し、APIトークンの設定をアプリに反映します。

というエラーが戻った場合に検討すべきことの一つ。

APIトークンを「保存」して設定画面に戻っただけでは、APIトークンは有効化されていない。

f:id:mogami74:20181122060833j:plain

右上の「アプリを更新」ボタンを押して、初めて有効化される。

f:id:mogami74:20181122060723j:plain

慌てているとついやってしまいがち。

これはセミナーとか行かないと直感的には失敗してしまいます。設定を変更したら最後に必ず「設定完了」ボタンをクリックして変更を確定させる必要があります

HttpのRequestHeaderを追加できるChrome アプリ

会社のベテランの方に教えてもらったのはFireMobileSimulator for Google Chrome™だったのだけれど、これは携帯電話の画面をシミュレートするのが元々の主旨なので、画面サイズが小さくなっちゃったりする。HttpHeaderを送信するだけならもうちょっといいのがあるのでは……と探してきたのがこちら。

Advanced REST Client 

Chromeアプリ(Extensionではなく)になっている。ストアで入手したら、chrome://apps/で開いて「ARC」をクリック。右クリックから「ショートカットを作成」を選ぶとデスクトップやスタートメニューに登録することもできる。

これがなかなか秀逸で、formデータの送信もできるし、履歴を再利用できるので、同じリクエストを何回も投げ直すことができる。APIの開発に便利。

参考記事