承認へのリンクとして、任意の要素、たとえば写真を使用できます
![](http://p2p.ktv-sk.com/images/vkontakte-connect.png)
、mail.ruを介した承認に関して同様の方法で発行されます。
リンクは次の形式になります。
api.vkontakte.ru/oauth/authorize?client_id=2445355&scope=&redirect_uri=_REDIRECT_URI_&response_type=code
連絡先と連携するためのメカニズムは次のとおりです。ユーザーはリンクをたどり、アプリケーションの連絡先番号を渡します。ユーザーの同意の場合とアプリケーションへのアクセスを拒否する場合の両方で、アプリケーションがスコープパラメーターで受信したいアクセスパラメーター 、リダイレクトのURIを渡します。 OAuthによる認証の場合、response_type = codeパラメーターが必要です。 ユーザーに関する基本的な情報のみを取得し、ユーザーのウォールに投稿してメッセージを送信したくないため、scopeパラメーターは空です。
![](https://habrastorage.org/storage1/8136649e/af78532b/cb1e1592/45395433.png)
ユーザーがアクセスを許可すると、次の形式のredirect_uriパラメーターで指定されたページにリダイレクトされます。
_http://REDIRECT_URI?code=7a6fa4dff77a228eeda56603b8f
このような例は、渡された値の前にドキュメントに(http://を追加して)示されていますが、実践が示すように、完全なアドレスを安全に転送することができ、プロトコルアドレスは必要な場合にのみ追加されます。
ユーザーが私たちを拒否した場合(これも覚えておくことが重要です)、_ httpにリダイレクトされます:// REDIRECT_URI?Error = access_denied&error_reason = user_denied&error_description = User + denied + your + requestページ
回答に付属するコードパラメーターは、アクセスキー(access_token)を取得するために使用されます。アクセスキーを使用して、実際にユーザーに関するデータを収集します。 受信したコードを使用するために、正確に1時間あります。
access_tokenを取得するには、次のコードを使用できます。
$url = "https://api.vkontakte.ru/oauth/access_token?client_id=_APP_ID_&client_secret=_CLIENT_SECRET_&code=" . $_REQUEST[ 'code' ];
$response = json_decode(@file_get_contents($url));
if ($response->error) {
die(' - ');
}
この例では、_APP_ID_はアプリケーションの番号であり、_CLIENT_SECRET_は秘密キーです。アプリケーションの設定ページで取得します。
$ response-> access_tokenでは、必要なアクセスキーを取得します。$ response-> user_idは、VKontakteのユーザー番号です。 エラーが発生した場合、$ response-> errorは空ではなく、$ response-> error_descriptionにはエラーの簡単な説明が含まれます。
最初のケースのapi.vkontakte.ru/method/METHOD_NAME.xml?PARAMETERS&access_token=ACCESS_TOKENページとapi.vkontakte.ru/method/METHOD_NAME?PARAMETERS=AESSのコンテンツを取得することにより、XML応答とJSONの両方を受信することにより、API要求を実行できます。 。 私自身は、このソーシャルネットワークとのやり取りが始まるため、JSONを選択しました。
APIメソッドの完全なリストは 、開発者向けのセクションのwikiページで見ることができます。多くのメソッドがありますが、1つまたは複数のユーザーのプロファイルに関する拡張情報を返すgetProfilesのみが必要です。
$arrResponse = json_decode(@file_get_contents( "https://api.vkontakte.ru/method/getProfiles?uid={$response->user_id}&access_token={$response->access_token}&fields=photo" ))->response;
$ arrResponse配列には、提供されるユーザーオブジェクトの配列があり、fieldsパラメーターで指定します(有効なパラメーターは、uid、first_name、last_name、nickname、screen_name、sex、bdate(birthdate)、city、country、timezone、photo、 photo_medium、photo_big、has_mobile、rate、contacts、education、online、ただし、一部は、たとえばuidやfirst_nameには明示的に示されていません)。 これに加えて、素晴らしいものが利用可能です -名前の大文字小文字の変化を示すことができます。 名前で検索し、目的の曲用の連絡先から名前を取得することで、この便利な機能をサイトで使用できます。
回答から必要なのは、$ response [0]-> uid、$ response [0]-> photo(プロフィール写真用)、$ response [0]-> first_nameおよび$ response [0]-> last_name表示されたユーザー名を接着します。
次のアクションのリストは、私の最初の記事に似ています :存在する場合、そのようなユーザーがいるかどうかを確認します-アバターとユーザー名を更新し、そうでない場合-データベースにエントリを作成し、サイトで認証し、メインページにリダイレクトします。