私の場合、毎日約1,500人がVKontakteからサイトにアクセスし、登録するための簡単で便利な方法を提供することが私の義務であるように思えます。
何か新しいものを開くことはまずありませんが、この記事の後に少なくとももう1つのサイトがもう少し便利になったら、このテキストを書く時間を無駄にしていないことを意味します。
PHPのサイト用にOpen authorization APIモジュールを作成したので、すべてのコードがそこにあります。 Django に関する記事もありました 。
最も単純な例のソースコードは、 githubで入手できます。 ここでは転載しませんが、その仕組みを簡単に説明します。
主な作業は、3つのメソッドを含むAuth_Vkontakteクラスによって実行されます。
- is_auth-ユーザーがOpen APIを介して認証されていない場合、VKのユーザーIDを返します-falseを返します
- logout -VKontakteが追加するCookieをクリアして、ユーザーをログアウトします。 もっと良い方法は見つかりませんでした。 Open APIにはログアウトメソッドがありますが、時間の経過とともに機能しました。
- render_login_form-すべての必要なスクリプトを含む、「Login VKontakte」ボタンを表示するためのHTMLコードを返します。
もちろん、vkontakteサポートをサイトエンジンに追加する必要もあります。たとえば、VKontakteユーザーIDを保存するユーザーのネームプレートに「vk_id」フィールドを追加します。
実際の条件で動作するためのアルゴリズムは、およそ次のとおりです。
- VKontakteユーザーがログインした後、別のページ(私の場合はvk.php)にスローし、そのようなvk_idを持つユーザーが既に登録されているかどうかを確認します。 そうでない場合は、簡略化された登録フォームを表示します(たとえば、ログインとメールのみ)。 次に、ユーザーを作成し、新しく登録した訪問者をメインページにスローします。
- 訪問者がサイトにログインしていない場合に備えて、Auth_Vkontakte :: is_authを介してVKontakte Cookieをチェックするバックエンドを作成します。 is_authがfalse以外の値を返し、このIDを持つユーザーがサイトに登録されている場合、システムを通じてユーザーを承認します。 彼が突然登録されなかったことが判明した場合、登録フォームを再度表示します。
- ログアウトすると、Cookieに加えて、VKからのCookieも削除されます(Auth_Vkontakte :: logoutメソッド)
一般に、このような例では、任意のAPIに関するドキュメントを開始する必要があるように思われます。 ただし、VKontakte開発者はそうは思わず、ドキュメントからOpen APIを理解することは不可能です。 実際、私はそれを使用しませんでした。durov.atのソースコードのすべてを読むだけです。
VKontakte社は、受け入れられるパラメーターの簡単な説明を含む関数のドライリストではなく、例や通常のマニュアルを作成する通常のテクニカルライターを雇う余裕はありませんか?
作業中のテスト例を試すには(ただし、ID以外は表示されません)、 ソースをダウンロードして、ローカルWebサーバーをopenapi.lc (ホストに追加:127.0.0.1 openapi.lc)で設定します。
誰かが気に入って便利になったら-FacebookConnectについての記事も書きます。