久々に、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'));
残タスク
- Named Credentialを使わないOAuth2.0対応
- 未実装のAPIの対応
- READMEの整理