Habrの「匿名のサンタクロースのクラブ」に取り組み、Habrによるユーザー認証の問題を解決する必要がありました。 Dirtyでは、ユーザーは自分のプロファイルに特別なリンクを配置するように提案され、その存在はサーバーによってチェックされました。 私たちは、反対の行動を取り、行動に参加することを決めた人の許可を可能な限り簡素化することにしました。
最終的に、トピックで説明するHabraAuthライブラリは使用されませんでしたが、 habra-adm.ruと同じ承認原則を使用します -ユーザーは、メールロボットアカウントまたは開発者アカウントの両方からHabréにニックネームを入力します彼はHabropostの特別なリンクを受け取り、それをクリックしてアカウントの所有権を確認します。
エンドユーザーにとって、HabraAuthを使用する場合、承認はさらに簡単に見えます。彼はニックネームを入力し、「ログイン」を押すと、サーバーは彼をHabropostにスローします。
サイトのHabraAuth接続の例を検討してください。 開始するには、ライブラリの最新バージョンをダウンロードします-これは、GitHubでリポジトリを複製することで最適に実行されます。
git clone https://github.com/kafeman/HabraAuth.git
ライブラリ自体は
HabraAuth.class.php
ファイルにあり、まず最初に接続する必要があります。
<?php include('HabraAuth.class.php'); ?>
次に、承認用の簡単なフォームを作成します。 たとえば、これ:
<h1> </h1> <form method="post"> <p> :</p> <p> <input type="text" name="login"> <input type="submit" value=" !"> </p> </form>
そして、そのためのハンドラを書きます:
// , // $config = array( // callback- // 'callback' => 'http://localhost/sample/callback.php', // // - , ;-) 'salt' => 'qwerty', // , // - , // 'cookies' => array( 'PHPSESSID' => '8ba44cc67a851d1c43d740c356665061', 'hsec_id' => 'c086a2c37f395cbb9aa7b064c8c712db', ), ); // HabraAuth // $habraAuth = new HabraAuth($config); // Auth $habraAuth->Auth($_POST['login']); // , header('Location: http://habrahabr.ru/users/none/mail/');
次に、ユーザーがHabropostからアクセスするコールバックページを作成します。
<?php // , if (empty($_GET['user']) || empty($_GET['hash'])) { header('Location: /sample/login.php'); exit(); } // include __DIR__ . '/../HabraAuth.class.php'; // , $config = array('salt' => 'qwerty'); // HabraAuth $habraAuth = new HabraAuth($config); // if (!$habraAuth->CheckAuth($_GET['user'], $_GET['hash'])) { header('Location: /sample/login.php'); exit(); } // TODO - echo ', ' . $_GET['user'] . ', ?'; ?>
結果はほとんどOAuthです:-)
発生する可能性のある唯一の問題は、ReadOnlyユーザーが、PMで「スパム」を受信し始める無邪気なHabro-peopleの名前を入力するという意地悪なことです。 この問題を解決するには、キャプチャを追加するか、データベースにユーザーを追加して、再度メッセージを送信しないようにします。
更新 : ここに書くと 、OAuth Habrahabrにアクセスできます。