ペイウォールをサイト内で認証する(代替認証機能)

codoc の ペイウォールの認証には codoc 側での認証が必要となりますが、これを利用せずにサイト内のオリジナル認証で codoc のペイウォールを解除する機能を説明します。

必要となる作業

  1. codoc のアカウント画面で代替認証のロジックを作成
  2. サイト内にて上記で指定した代替認証をおこなう実装を追加

の2ステップで作業は完了します。

代替認証ロジックの作成

代替認証は codoc pro が提供する機能であるため利用の際は pro の契約をおこなう必要があります。

アカウント画面の「代替認証ロジック」を指定することで機能が有効になります。

認証は codoc 側で指定した任意の文字列とおなじ文字列をサイト側で作成し、 sha256 でハッシュ化したものを認証時に指定しておこなうものとなります。

ロジックはユニックスタイムである、$time と codoc 側で付与される $user_code を含めたスペース区切りで指定します。

$time $user_code abcdefg

とした場合、PHP を例とした実装では以下のようにハッシュを作成します。

$time = time();

$user_code = “XXXXXXXX”; // アカウント管理画面から取得可能

$alt_auth_key = hash(“sha256”, $time . $user_code . “abcdefg”);

ロジックはスペース区切りで $time と $user_code を含めてさえいれば任意の文字列はどこに配置されても問題ありません。(例: abc $user_code def $time ghi)

サイト内にて代替認証を行う実装を追加

実装方法についてはハッシュ値を作成する JSON API を作成するか、codoc タグに直接ハッシュ値を指定する2パターンがあります。

JSON API の場合 (PHP)

$time = time();

$text_defined_on_codoc = $time . “usercode” . “abcdefg”; // codoc で指定したロジックとおなじ順番でテキストを生成

$key = hash(“sha256”, $text_defined_on_codoc);

echo json_encode($data, [“time” => $time, “key” => $key]); // サイト内での認証がOKならJSONを出力するように

上記のように time と key が存在する JSON を出力する形となります。正しい time と key が出力された場合はペイウォールの認証がされ、コンテンツ表示されます。実際の利用においては認証を許可するかしないか、たとえばサイトにログイン中かどうかなどを勘案してJSONを出力するようにしてください。

codoc の記事タグにて data-alt-auth=”1″ として代替認証を有効にし、data-alt-auth-key-api-url に作成した API の URL を指定。

<div id=”codoc-entry-XXXXX” class=”codoc-entries” data-alt-auth=”1″ data-alt-auth-key-api-url=”https://yourhost/path/to/api” >ログインして記事を読む</div>

直接指定する場合

codoc タグに $key ( data-alt-auth-key ) と $time ( data-alt-auth-time ) を JSONと同様のロジックにて作成して直接指定する。

<div id=”codoc-entry-XXXXX” class=”codoc-entries” data-alt-auth=”1″ data-alt-auth-key=”<?php echo($key); ?>” data-alt-auth-time=”<?php echo($time); ?>” >ログインして記事を読む</div>

たとえばペイウォールの認証をサイト内でログイン状態と同期したい場合は以下のようにするとログインのリンク先を指定できます。

<div id=”codoc-entry-XXXXX” class=”codoc-entries” data-show-copyright=”0″ data-alt-auth=”1″ data-alt-auth-key-api-url=”https://yourhost/path/to/api” data-alt-auth-login-url=”https://yourhost/path/to/login” data-alt-auth-paywall-url-query-name=”back_to” data-login-button-text=”ログインして記事をよむ”>この続きはログインをしてください</div>
上記の表示例

以下に代替認証で利用するタグの属性をまとめます。

data-alt-auth代替認証1:する 0:しない(デフォルト)
data-alt-auth-key代替認証用のキーアカウント画面で指定した代替認証ロジックで生成したハッシュ値
data-alt-auth-time代替認証用のUNIXTIME代替認証用のキーを生成したUNIXTIME
data-alt-auth-key-api-url代替認証のキーを生成するためのURLキーとUNIXTIMEをタグで指定しない場合に以下のjsonを出力するURLを指定。
{ “key”: $key, “time”: $time }
data-alt-auth-login-url代替認証時に変更可能なログインURL任意のURL
data-alt-auth-
paywall-url-query-name
代替認証用ログインURLの戻りURLパラメーター名任意の名前 デフォルトは paywall_url
代替認証用の codoc 記事タグ属性

いががでしたでしょうか。代替認証機能を利用すればサイト内での会員限定で配信をおこなうといったことが簡単にできることがおわかりいただけと思います。

その他、

  • 特定広告を閲覧したあとにコンテンツ表示をする、
  • 通常はペイウォールが解除されているが、所定の回数閲覧したあとにコンテンツ販売をおこなう

といったことも可能となります。具体的な実装方法についてはケースに応じて個別に回答を差し上げますのでご利用の際は当社までお問い合わせください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です