VKontakte、Mail.ruなどによる承認-3(VKontakteおよびOAuth)

最後の 2つのパートでは、提供したjavascriptウィジェットを使用してVKontakteを介して、JS APIとサーバー/サーバー相互作用の両方を使用してMail.ruを介して承認を行いました。 今日は、VKontakteに関する省略を修正し、クライアントのJavaScriptを使用せずにVKontakteを介した承認を検討します。

承認へのリンクとして、任意の要素、たとえば写真を使用できます



、mail.ruを介した承認に関して同様の方法で発行されます。

リンクは次の形式になります。

api.vkontakte.ru/oauth/authorize?client_id=2445355&scope=&redirect_uri=_REDIRECT_URI_&response_type=code





連絡先と連携するためのメカニズムは次のとおりです。ユーザーはリンクをたどり、アプリケーションの連絡先番号を渡します。ユーザーの同意の場合とアプリケーションへのアクセスを拒否する場合の両方で、アプリケーションがスコープパラメーターで受信したいアクセスパラメーター 、リダイレクトのURIを渡します。 OAuthによる認証の場合、response_type = codeパラメーターが必要です。 ユーザーに関する基本的な情報のみを取得し、ユーザーのウォールに投稿してメッセージを送信したくないため、scopeパラメーターは空です。



ユーザーがアクセスを許可すると、次の形式の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表示されたユーザー名を接着します。

次のアクションのリストは、私の最初の記事に似ています :存在する場合、そのようなユーザーがいるかどうかを確認します-アバターとユーザー名を更新し、そうでない場合-データベースにエントリを作成し、サイトで認証し、メインページにリダイレクトします。



All Articles