2004年11月05日

●TypeKeyの使い方

TypeKeyシックス・アパートのサービスのひとつで、ウェブログにコメントする時に利用するIDです。TypeKeyを利用することでウェブログはコメントスパムを防止することが可能になります(現実にはコメント投稿の利便性を考慮しているサイトが多く、結果的に完全な防止には至らないようです)。
すでにあちこちのサイトで書かれているようですが、このエントリーではTypeKeyについて

  • アカウント取得

  • TypeKey認証によるコメント投稿が可能なサイトにする

  • TypeKey認証によるコメント投稿
の3つの項目に分けて記します。なお機能を完全に把握できている訳ではございませんので認識誤り等ございましたら予めご了承ください。


  • TypeKeyアカウント取得
    TypeKeyを利用する人が共通して行う作業として「TypeKeyアカウントの取得」があります。
    TypeKeyウェブサイトのTypeKeyへのよくある質問に「Type Keyアカウントの取得方法」が掲載されておりますので参照ください。TypeKeyの登録は無料です。


  • TypeKey認証によるコメント投稿が可能なサイトにする

  • まずTypekeyウェブサイトへウェブログのURL登録を行います。
    上記で取得したアカウントでTypeKeyウェブサイトにログインし、ログイン画面で「アカウント設定」タブ内の一番下に表示されている「ウェブログの設定」にサイトのURL(注:mt.cfgのCGIPathに設定したURL)を登録して「保存」をクリックしてください。またここに表示されている「TypeKeyトークン(20文字のランダムな半角英数文字)」を次の設定で使いますので画面を閉じる前にコピーしてやってください。
    ウェブログは1つのアカウントで同時に5サイトまで登録することができます。
    次にウェブログでTypekey認証を有効にする設定をします。
    Movable Type管理メニューの「ウェブログの設定」クリック→次ページ右上の「設定」をクリック→次ページ真中辺りにある「コメントの設定」の「登録されたコメンターのコメントは許可する」をチェックします。
    チェックするとサブメニューが開きますので、その中の「TypeKeyトークン」を設定します。ここに先程コピーしたTypeKeyトークンを入力・保存し、サイトの再構築を行ってください。少なくとも個別エントリーアーカイブの再構築をしないと設定が反映されないようです。他のチェック項目は任意です。
    なお先のTypeKeyウェブサイト登録との順序性はありませんのでどちらの作業から行っても大丈夫です。


  • TypeKey認証によるコメント投稿

  • Movable Typeを用いたウェブログ(注:TypeKeyは他のアプリケーションでも利用可能みたいです)で個別エントリーアーカイブのコメント入力欄の上に
      TypeKey ID を使って サイン・イン してください。
    とあるのをよく見かけると思います。これを利用することでTypekey認証によるコメント投稿が可能になります。TypeKey認証を行えば名前・メールアドレスの入力は不要です。この表示がないサイトはTypeKey認証によるコメント投稿を利用していないか、管理画面でTypeKey設定を行っていても(多分)3.0以前のバージョンの個別エントリーアーカイブテンプレートを用いているためページに反映されていない可能性があります。

    サイン・インします。 このリンクをクリックすると左のTypeKeyログイン画面にジャンプします。サイン・インはコメントを入力する前に実施してください。サイン・イン前に入力したコメントはTypeKey認証後反映されません。

    TypeKeyアカウントを取得されているのであればログイン画面からログインすることでコメント画面に戻り、先の表示が

      サイン・インを確認しました、hogehoge. さん。コメントしてください。 (サイン・アウト)
    に変わります。これでTypeKey認証されましたのでコメントを投稿します。投稿したコメントの投稿者欄にはTypeKeyによる投稿を行ったコメンターマークが表示されます。TypeKey認証を終了する場合は上記の「サイン・アウト」をクリックします。

    サイト管理者が管理メニューの「ウェブログの設定」の中で「TypeKey からメールアドレスを取得する」をチェックしている場合は、サイン・イン時のTypeKeyログイン時に画面のようにメールアドレスの送信を求められます。「いいえ」を選択するとコメント投稿はできません。
    サイトのTypeKey設定が適正に行われていない場合、サイン・イン時のTypeKeyログイン画面の代わりに図のような画面が表示されます。このような場合はサイト管理者に確認ください。
    13:50 | Comments [0] | Trackbacks [3]

    2004年10月22日

    ●TypeKeyでサイン・インしても表示が変わらない問題を対処

    現状の公開テンプレートでは個別アーカイブからTypeKeyにサイン・インした後、サイン・イン状態の画面になりません。実は以前からそういう状態だったのですが「そういうものか…」と思って解決に向かっての行動を怠ってました(他のサイトでTypeKeyサイン・インをしないもので…)が、mayutanさんからのご質問でやはり不具合であることが判明しました。すいません…。
    ちなみに現状のテンプレートではサイン・イン後に確認画面に移動、またはリロードするとサイン・インされた状態が表示されます。


    個別アーカイブからTypeKeyのサイン・インを行う時の画面遷移は下記の通りです。

    • 個別アーカイブの「TypeKey ID を使って サイン・イン してください。」のリンク部分をクリック

    • TypeKeyログイン画面にジャンプするのでサイン・イン、または登録(サイン・イン情報をcookieに保持)

    • サイン・インが成功すればサイン・イン画面から個別アーカイブにリダイレクト(cookieよりサイン・イン情報を取得してサイン・イン状態表示)
    この中の、一番下のcookieの取得が正常に行えていないようです。


    この問題解決にあたって参考させて頂いたサイトです。ありがとうございました。

    以下、上記サイトからの引用です。
    この問題は個別アーカイブの下記の赤色部分(2ヶ所)を青色部分に置き換えることで解決します。
    修正前
    <script type="text/javascript" src="<MTCGIPath><MTCommentScript>?__mode=cmtr_name_js"></script>

    修正後
    <script type="text/javascript">
    <!--
    var commenter_name = getCookie("commenter_name");
    // -->
    </script>

    上記の対処とは別にTypeKeyサイトの「コメンターの設定」にある「ニックネーム」が日本語の場合、文字が化けが発生するようですので、下記の対処も併せて実施する必要があります。個別アーカイブ・コメントプレビュー・コメントリスト・コメントエラー上部にあるJavaScriptの赤色部分をそれぞれ青色のスクリプトに置き換えます。
    2004.10.27 追記:3.11-jaの場合は「Remember Me」というテンプレートモジュールが修正対象です。
    修正前
    function setCookie (name, value, expires, path, domain, secure) {
        var curCookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "");
    }

    function getCookie (name) {
        var prefix = name + '=';
        var c = document.cookie;
        var nullstring = '';
        var cookieStartIndex = c.indexOf(prefix);
        if (cookieStartIndex == -1)
            return nullstring;
        var cookieEndIndex = c.indexOf(";", cookieStartIndex + prefix.length);
        if (cookieEndIndex == -1)
        cookieEndIndex = c.length;
        return unescape(c.substring(cookieStartIndex + prefix.length, cookieEndIndex));
    }


    修正後
    function setCookie (name, value, expires, path, domain, secure) {
        var curCookie = name + "=" + (window.encodeURIComponent ? encodeURIComponent(value) : escape(value)) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "");
    }

    function getCookie (name) {
        var prefix = name + '=';
        var c = document.cookie;
        var nullstring = '';
        var cookieStartIndex = c.indexOf(prefix);
        if (cookieStartIndex == -1)
            return nullstring;
        var cookieEndIndex = c.indexOf(";", cookieStartIndex + prefix.length);
        if (cookieEndIndex == -1)
        cookieEndIndex = c.length;
        var value = c.substring(cookieStartIndex + prefix.length, cookieEndIndex);
        return window.decodeURIComponent ? decodeURIComponent(value) : unescape(value);

    }


    私のニックネームを半角英数から全角に変更して試したところ、正常に表示されることを確認しました。


    これに伴い、公開中のテンプレートを修正致しました(またかよ…って感じですが)。修正したのは、

    です。それ以前のテンプレートについてはTypeKey対応でないバージョンを考慮して変更していません(というかTypeKey対応のタグがそもそもありませんでしたね…)。


    各テンプレートのサイン・インおよびサイン・アウトにつきましては一通り確認致しましたが不具合等ございましたらご連絡ください。

    15:15 | Comments [19] | Trackbacks [7]