2017-05-02

apex-mastodon作ってみた

久々に、Apexで外部サービスのAPI叩いてみるシリーズ!ということで、apex-mastodonというApexのライブラリを作ってみました。

インストール

jsforce-deployだとこんな感じでいけます

$ git clone https://github.com/tzmfreedom/apex-mastodon
$ jsforce-deploy -D apex-mastodon/src -u {USERNAME} -p {PASSWORD}

READMEに書いてあるDeploy to Salesforceボタンも多分動くはず(未検証)

使い方

今のところ指定ログイン情報(Named Credential)でしか利用できないです…orz

何はともあれcurlでアプリを登録します。作成したアプリは削除できないので注意してください。redirect_urisはSalesforceで認証プロバイダを作成したときに払い出されるコールバックURLです。

curl -X POST -sS https://{mastodonのインスタンスのホスト名}/api/v1/apps \
  -F "client_name={適当なクライアント名}" \
  -F "redirect_uris=https://login.salesforce.com/services/authcallback/{組織ID}/{認証プロバイダ名}" \
  -F "scopes=read write follow"

Salesforce側は認証プロバイダと指定ログイン情報を設定します。上記コマンドでクライアントIDとシークレットが払い出されるのでそれらを設定します。

「ID種別」を「ユーザ」にした場合は、各々のユーザで外部システムの認証設定を編集する必要があります。

ここまで出来ればあとは以下のApexコードでtootできます。

Mastodon_Client client = new Mastodon_Client('callout:{named credential name}');
Mastodon_Status result = client.postStatus(new Mastodon_Toot('hello mastodon'));

残タスク

参考URL

このエントリーをはてなブックマークに追加