Movable TypeのDataAPIで記事を投稿するサンプル

Movable TypeのDataAPIで記事を投稿するサンプル

Posted at September 8,2021 11:55 PM
Tag:[DataAPI, MovableType]

DataAPIで記事を投稿するサンプルを紹介します。

1.はじめに

ネットにDataAPIで記事を投稿するサンプルがないのと、サンプルがあってもログイン・ログアウトといった処理が盛り込まれていて、コードが複雑になって理解が難しいので、シンプルなものを自作してみました。

2.サンプル

下記にサンプル(ほぼほぼそのまま利用可能)を示します。ご利用前に3項と4項には必ず目を通してください。

また、コードにコメントを記載しているので、解説は省略します。

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="<$mt:StaticWebPath$>data-api/v4/js/mt-data-api.min.js"></script>
<script type="text/javascript">
function post() {
 
    // DataAPIオブジェクト生成
    var api = new MT.DataAPI({
        baseUrl: '<$mt:CGIPath$>mt-data-api.cgi',
        clientId: 'post-entry',
        sessionPath: '/',
    });
 
    // ユーザー情報
    var credential = {
        username: "ユーザー名",
        password: "パスワード",
        remember: true
    };
 
    // 認証
    api.authenticate(credential, function(response) {
        if (!response.error) {
 
            // 記事データ
            var entry = {};
            entry['title']  = $('#title').val();
            entry['body']   = $('#text_body').val();
            entry['status'] = 'Publish';
 
            // 記事投稿
            api.createEntry(<$mt:BlogID$>, entry, function(response) {
                if (response.error) {
                    alert("Error:" + response.error.code + ':' + response.error.message);
                    return;
                }
                alert("Success:" + response.title);
            });
        }
    });
}
</script>
 
<div id="entry-post">
    <form name="CreateEntry" id="CreateEntry" method="post">
        <p><input type="text" name="title" id="title" placeholder="タイトル"></p>
        <p><textarea name="text_body" id="text_body" placeholder="本文"></textarea></p>
        <p><input type="submit" onclick="post(); return false;" value="投稿"></p>
    </form>
</div>

3.使い方

上記のコードをインデックステンプレートにペーストして、下記の赤色部分について、任意のユーザー・パスワードに書き換えてください。

    // ユーザー情報
    var credential = {
        username: "ユーザー名",
        password: "パスワード",
        remember: true
    };

テンプレートを再構築してページにアクセスすればフォームが表示されるので、タイトルと本文を入力して「投稿」をクリックすれば投稿できます。

投稿結果はJavaScriptのalertで表示します。

4.注意事項

パスワードは、ウェブサービスのパスワードを設定してください。ユーザー編集画面の「Webサービスパスワード」が該当します。

また、DataAPIを有効にするには、サイトの「設定」→「Webサービス」→「Data API」を有効にしてください。無効のまま投稿すると403エラーが発生します。

ただいシステム管理者はこの設定と無関係に投稿できるようです。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)