ベータテストでWG P APIがリリースされて以来、最も一般的な質問は「サイトで認証を行う方法」でした。
それはまさにそうだった-人間は怠aな生き物です。
Wargaming開発者パートナープログラムの他の参加者の生活を簡素化するために、サイトの認証モジュールを作成した経験を共有したいと思います。
2つのオプションがあります。
1. OpenIDを使用する
承認プロセスのロジックを説明しました。ハブ上のOpenIDに関する記事
2. APIメソッドを使用して認証モジュールを作成します。
すべての一般的なCMSのプラグインについては説明しません。一般的なスキームのみを説明し、コードの例を示します。
理論
ユーザーを認証するために、WG APIには現在3つのメソッドがあります。
auth / login-メソッドはユーザーの認証に使用されます-access_tokenを取得します。
auth /延長 -この方法を使用すると、ユーザーの介入なしにaccess_tokenを拡張できます
auth / logout -access_tokenを破壊する方法
access_tokenは、プレイヤーのアカウントに関する個人情報を取得するために使用されます-格納庫にあるテクニックに関する情報、プレイヤーの友人のアカウント識別子など。
前述のようにaccess_tokenを取得するには、auth / loginメソッドが使用されます。これは、redirect_uriパラメーターで指定されたアドレスに承認ステータスに関する情報を送信します
WG開発者の一人は次のように述べています。
auth / loginメソッドの機能を拡張することが決定され、分離が導入されます(情報が正常に入力されました)。
1)ユーザーを1つのURLにリダイレクトします。
2)承認情報が2番目に送信されます(POSTまたはGETメソッドを使用)。
理論に戻りましょう。
作業アルゴリズム
ユーザーをリダイレクトするリンクを生成する
まず、ユーザーをさらにリダイレクトするためのURLを生成するためのリクエストを使用して、auth / loginメソッドを有効にする必要があります。
このヘルメットのリクエストについて
https://api.worldoftanks.ru/wot/auth/login/?application_id=<application_id>&redirect_uri=<redirect_uri>&nofollow=1
<application_id>は
、開発者のオフィスに登録する必要があるアプリケーションのapplication_idです。
<redirect_uri> -ハンドラースクリプトのURL。
パラメーター値はnofollow = 1であるため、メソッドはリダイレクトではなく応答本文でURLを返します。
auth.phpは一度に2つのタスクを実行します。リンクを生成してリダイレクトするか、リダイレクト後にユーザーが戻ってきたら承認します。
ユーザーをWG Webサイトにリダイレクトする
この例では、リンクを生成した後、スクリプト自体がユーザーをリダイレクトします。
数行のコードを変更することにより、「ログイン」ボタンをクリックした後、「Loading ...」(またはloader.gifを貼り付ける)を記述するためにjavascriptでコードをかき混ぜることができます。
ユーザーが碑文(まあ、または写真)を賞賛している間、jsはスクリプトにリクエストを送信し、apiにリクエストを送信し、apiはスクリプトに応答し、スクリプトはリンクを返し、最後にjsはユーザーをそれにリダイレクトします。
WG DPPルールはapplication_idの公開を禁止しているため、jsからAPIに直接リクエストを送信することはできません。
ユーザーリターン
プレーヤーがWG Webサイトにログインし、当社のサイトで詳細な統計情報を表示できるようになった後、リダイレクトされます
<redirect_uri> ?&status = ok&
access_token =
<access_token> &nickname =
<_nickname> &account_id =
<account_id> &expires_at =
<expires_at>間違いがなければ...
したがって、スクリプトはデータを受け取ります。
ステータスaccess_tokenニックネームaccount_id expires_at
しかし、このデータは信頼できませんが!
ユーザーが戻った後に受信したデータの検証
承認を行う場合、受信したデータが真実であり、WG Webサイトから正確に送信され、手動で登録されていないことを確認する必要があります。
メソッドの作業がやり直されるのはまさにこの瞬間のためです-現時点では、これらのパラメーターを持つプレーヤーがウォーゲーミングWebサイトから来たのか、アドレスバーに入力したのかはわかりません。
$ _SERVER ['HTTP_REFERER']は完全な保証を提供しません。データの信ver性を検証するために、auth / longateメソッドを使用します
これはオプションの1つです。 延長に加えて、受信したトークンを使用してアカウント/情報をリクエストすることもできます。プライベートデータを取得できれば、すべて問題ありません。これを使用して、有効なaccess_tokenが転送されたかどうか、それが誰(account_id)に属しているかを確認できます。
すべてが正常である場合、データベースに必要なデータを記録し、ユーザーのCookieを設定します。ログイン/パスワードを使用して、標準認証で必要なすべてを行います。
練習する
<? define('URL','http://example.com/WGDPPAuth.php');
デモ