新しいサイトAPI Vkontakte.ruによる承認

ソーシャルネットワークVkontakte.ruに登録されたサイトの潜在的なユーザーの軍隊は、お気に入りのソーシャルネットワークを使用して登録を導入するためのあなたの努力にきっと感謝します。 今朝、そのような機会を作ることを考えました。そして、遅滞なく、欲望を現実に変えることにしました。

2つの事実が実装を促進しました。1つ目は、Open APIがFacebook Connectを思い出させてくれたことです。 2番目の事実はさらに重要でした-各承認オプション(OpenID、OAuth、FacebookConnect)が個別のバックエンドであり、FCに似た追加の1つを記述するライブラリは既にあり、難しいタスクのようには見えませんでした。 最後に、実際には些細なことであることが判明したと言えます。

それでは、Vkontakte.ruでの承認には何が必要ですか?

1. Python 2.5以降
2. Django r11807(トランクから最新バージョンをダウンロードするのが最善です)
3. ジャンゴ迷惑
4. django-publicauth

原則として、インストールと設定の説明はdjango-publicauthライブラリのwikiページにありますが、Vkontakte.ruに焦点を当て、手順をロシア語で再度説明します。

まず、VKontakte.ruで独自のアプリケーションを作成する必要があります
私にとって少しがっかりしたのは、アプリケーション設定で接続アドレスをlocalhost :8000 /という形式で指定できないことでした。 アプリケーションがスピンし、ホームコンピューター上の/ etc / hostsを変更する実際のドメインを指定し、ポート80でサイトを起動する必要がありました。 Facebookにはそのような問題はありません。
次に、生成されたキーとパスワードをsettings.pyファイルに登録する必要があります。次のようになります。
  1. VKONTAKTE_APP_ID = XXXX
  2. VKONTAKTE_API_KEY = 'XXXX'
  3. VKONTAKTE_SECRET_KEY = 'XXXXXXXXX'


ここで、ログインページテンプレートに次のhtml / javascriptピースを挿入する必要があります。

Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  1. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  2. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  3. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  4. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  5. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  6. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  7. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  8. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  9. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  10. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  11. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  12. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  13. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  14. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  15. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  16. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>
  17. Copy Source | Copy HTML <a onclick= "return vk_login();" href= "#" >.ru</a>< <script src= "http://vkontakte.ru/js/api/openapi.js" type= "text/javascript" charset= "windows-1251" ></script> <script type= "text/javascript" > VK.init({ apiId: xxxxx, nameTransportPath: '{% url publicauth-vkontakte-xdreceiver %}' }); function vk_login() { VK.Auth.login(testMe); return false ; } function testMe(response) { if (response.status == "connected" ) { window.location = "{% url publicauth-complete 'vkontakte' %}" } }; </script>


xxxxxを実際のアプリケーションIDに置き換えることを忘れないでください。これは整数である必要があるため、引用符を付けないでください。

原則として、これは停止できます。 デフォルトでは、最初の認証試行後のpublicauthライブラリは、追加のユーザー名フィールドに入力するように要求しますが、そのようなフィールドが必要ない場合、または他の追加フィールドが必要な場合は、フォームへのパスの形式の値でPUBLICAUTH_EXTRA_FORMを指定するだけです。 唯一のルールは、フォームに次のパラメーターを取るsaveメソッドが含まれている必要があるということです。
save(self、request、identity、provider):作成されたユーザーを渡して返します。

こちらで実際の例を使ってサイトを見ることができます。

更新 :労働者の要求に応じて、すべての可能な許可オプションを備えた既製のデモプロジェクトを作成します。 http://pyplanet.org/static/example.tar.gz

これは通常のdjangoサイトであり、アーカイブを解凍し、必要なすべてのライブラリをpip経由でインストールします。さらに、virtualenv + pip経由でインストールすることもできます。 このため、プロジェクト内に特別なスクリプトを配置しました。 Linuxを使用している場合は、。/ buildenv.shを実行するだけですべてがインストールされます。その後、仮想環境(ソースvenv / bin / acitvate)をアクティブにしてsyncdbを作成するだけで済みます。 virtualenvを使用したくない場合は、pip install -r pipreq.txtを手動で実行できます。

私の設定は少し珍しいです、すべてが設定/フォルダにあります、ベースを指定するために設定/local.pyファイルを編集する必要があります(sqlite3に満足していない場合)
django-publicauth設定はsettings / publicauth.pyにあります

追加のフィールドを持つフォームは、custom_from.pyという名前のプロジェクトのルートにあります。

Vkontakte.ruの承認が機能するためには、/ etc / hostsに行を登録するだけです。
127.0.0.1 pyplanet.org
ポート80でサイトを開始し(python manage.py runserver 0.0.0.0:80)、このアドレスに移動します。
または、VKontakte Webサイトで他のドメインを使用してアプリケーションを作成し、設定ファイルsettings / publicauth.pyにキーを挿入します
Facebookにも同じ詐欺が必要です。

Source: https://habr.com/ru/post/J91568/


All Articles