シングルサインオンにより、既存のサイトユーザーは、ソーシャルネットワーク(OAuth)またはOpenIDプロバイダーを使用したウィジェットでの承認を必要とせずに、サイトのユーザーアカウントに代わってCackleウィジェットを介してコメントを残すことができます。
これはどうですか?
単一の認証を設定するために、mcSSOAuth変数がウィジェットコードに追加され、その値は暗号化されたユーザーデータとウィジェットの秘密キーです。 キーの検証が成功した場合、データはシステムに保存され、ユーザーは承認されます。
変数の値はサーバー上で形成され、等しい必要があります。
<JSON Base64><><MD5 ><>< >
ユーザーJSONデータには次の属性が含まれます。
- id-ユーザーの一意の識別子
- 名前-ユーザー名
- メール(オプション)-メールアドレス
- アバター(オプション)-アバターへのリンク
- www(オプション)-Webサイトへのリンク
MD5要求署名は次のように形成されます
md5(<JSON Base64>< >)
Site API Key - API. "", WordPress .
, JSON , JSON {}.
www.example.org. Freeman. , Freeman Cackle , . , Freeman .
- Freeman :
id - 7, email - freeman@example.org, avatar - example.org/freeman.png, Site API Key - 123456789, is_user_logged_in() .
function cackle_auth(){ $timestamp = time(); $siteApiKey = 123456789; if (is_user_logged_in()){ $user = array( 'id' => '7', 'name' => 'Freeman', 'email' => 'freeman@example.org', 'avatar' => 'http://example.org/freeman.png' ); $user_data = base64_encode(json_encode($user)); } else{ $user = '{}'; $user_data = base64_encode($user); } $sign = md5($user_data . $siteApiKey . $timestamp); return "$user_data $sign $timestamp"; }
md5(<JSON Base64>< >)
Site API Key - API. "", WordPress .
, JSON , JSON {}.
www.example.org. Freeman. , Freeman Cackle , . , Freeman .
- Freeman :
id - 7, email - freeman@example.org, avatar - example.org/freeman.png, Site API Key - 123456789, is_user_logged_in() .
function cackle_auth(){ $timestamp = time(); $siteApiKey = 123456789; if (is_user_logged_in()){ $user = array( 'id' => '7', 'name' => 'Freeman', 'email' => 'freeman@example.org', 'avatar' => 'http://example.org/freeman.png' ); $user_data = base64_encode(json_encode($user)); } else{ $user = '{}'; $user_data = base64_encode($user); } $sign = md5($user_data . $siteApiKey . $timestamp); return "$user_data $sign $timestamp"; }
md5(<JSON Base64>< >)
Site API Key - API. "", WordPress .
, JSON , JSON {}.
www.example.org. Freeman. , Freeman Cackle , . , Freeman .
- Freeman :
id - 7, email - freeman@example.org, avatar - example.org/freeman.png, Site API Key - 123456789, is_user_logged_in() .
function cackle_auth(){ $timestamp = time(); $siteApiKey = 123456789; if (is_user_logged_in()){ $user = array( 'id' => '7', 'name' => 'Freeman', 'email' => 'freeman@example.org', 'avatar' => 'http://example.org/freeman.png' ); $user_data = base64_encode(json_encode($user)); } else{ $user = '{}'; $user_data = base64_encode($user); } $sign = md5($user_data . $siteApiKey . $timestamp); return "$user_data $sign $timestamp"; }
md5(<JSON Base64>< >)
Site API Key - API. "", WordPress .
, JSON , JSON {}.
www.example.org. Freeman. , Freeman Cackle , . , Freeman .
- Freeman :
id - 7, email - freeman@example.org, avatar - example.org/freeman.png, Site API Key - 123456789, is_user_logged_in() .
function cackle_auth(){ $timestamp = time(); $siteApiKey = 123456789; if (is_user_logged_in()){ $user = array( 'id' => '7', 'name' => 'Freeman', 'email' => 'freeman@example.org', 'avatar' => 'http://example.org/freeman.png' ); $user_data = base64_encode(json_encode($user)); } else{ $user = '{}'; $user_data = base64_encode($user); } $sign = md5($user_data . $siteApiKey . $timestamp); return "$user_data $sign $timestamp"; }
md5(<JSON Base64>< >)
Site API Key - API. "", WordPress .
, JSON , JSON {}.
www.example.org. Freeman. , Freeman Cackle , . , Freeman .
- Freeman :
id - 7, email - freeman@example.org, avatar - example.org/freeman.png, Site API Key - 123456789, is_user_logged_in() .
function cackle_auth(){ $timestamp = time(); $siteApiKey = 123456789; if (is_user_logged_in()){ $user = array( 'id' => '7', 'name' => 'Freeman', 'email' => 'freeman@example.org', 'avatar' => 'http://example.org/freeman.png' ); $user_data = base64_encode(json_encode($user)); } else{ $user = '{}'; $user_data = base64_encode($user); } $sign = md5($user_data . $siteApiKey . $timestamp); return "$user_data $sign $timestamp"; }
md5(<JSON Base64>< >)
Site API Key - API. "", WordPress .
, JSON , JSON {}.
www.example.org. Freeman. , Freeman Cackle , . , Freeman .
- Freeman :
id - 7, email - freeman@example.org, avatar - example.org/freeman.png, Site API Key - 123456789, is_user_logged_in() .
function cackle_auth(){ $timestamp = time(); $siteApiKey = 123456789; if (is_user_logged_in()){ $user = array( 'id' => '7', 'name' => 'Freeman', 'email' => 'freeman@example.org', 'avatar' => 'http://example.org/freeman.png' ); $user_data = base64_encode(json_encode($user)); } else{ $user = '{}'; $user_data = base64_encode($user); } $sign = md5($user_data . $siteApiKey . $timestamp); return "$user_data $sign $timestamp"; }
cackle_auth関数は、ウィジェットコードが配置されている場所に配置する必要がある文字列を返します。
<script type="text/javascript"> var mcSSOAuth = '<?php echo cackle_auth(); ?>'; // </script>
ところで、 WordPress用のプラグインの新しいバージョンでは 、単一の承認が既に実装されています。 設定を確認することで有効にできます。