Windows 8でOAuth 2.0プロトコルを使用したVK認証

今日は、Windows 8でVKontakteの最も簡単なアプリケーションを作成する方法について説明します。まず、http://vk.com/developers.phpのページに移動して、新しいアプリケーションを作成します。





次に、コンピュータとスマートフォン専用に設計されているスタンドアロンアプリケーションを選択します。 アプリケーションの名前を入力し、「アプリケーションの接続」をクリックします。 その後、アプリケーションの登録を確認するために必要なコードを含むメッセージを携帯電話で受け取ります。



チェックが成功すると、アプリケーション編集ページに移動します。次のようになります。



このページからアプリケーションIDが必要になります。さらに作業するためにどこかに保存できます。

それで、フロアは完了しました。今度は認証に進みます。

このページにアクセスして承認の方法を説明します。 次に、コーディングに直接進み、Visual Studioを起動して、BlankAppに基づく新しいプロジェクトを作成します。



OAuth 2.0プロトコルを使用して承認しますこれを行うには、MainPage.xaml.csページに移動し、WebAuthenticationBrokerを介して承認を行う新しいOAuthVk()メソッドを作成します。これは、承認リンクが開く標準ウィンドウを起動する特別なクラスです。 認可ウィンドウにデータを入力した後、ブローカーは作業を終了し、認可が成功したかどうかの結果を送信します。

メソッドのコードは次のとおりです。

public static async void OAuthVk() { const string vkUri = "https://oauth.vk.com/authorize?client_id=3881112&scope=9999999&" + "redirect_uri=http://oauth.vk.com/blank.html&display=touch&response_type=token"; Uri requestUri = new Uri(vkUri); Uri callbackUri = new Uri("http://oauth.vk.com/blank.html"); WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync( WebAuthenticationOptions.None, requestUri, callbackUri); switch (result.ResponseStatus) { case WebAuthenticationStatus.ErrorHttp: MessageDialog dialogError = new MessageDialog("    \n" + "    !", ""); dialogError.ShowAsync(); break; case WebAuthenticationStatus.Success: string responseString = result.ResponseData; MessageDialog dialogSuccess = new MessageDialog(responseString); dialogSuccess.ShowAsync(); break; } }
      
      





今、私が書いたものについて少し。 vkUriの最初の行は、OAuth 2.0ダイアログボックスを開くためのアドレスですここから取得します 。 行はclient_idを言います-私たちはアプリケーションのID、スコープを渡します- ここから取得したアプリケーションのアクセス権、私は9999999を書きましたこれはすべてへのアクセスです、access_tokenはその値を変更しませんおよびuser_idを使用し、それらを使用してAPIを呼び出しますが、これについては後ほど別の投稿で説明します。 その後、AuthenticateAsyncメソッドを呼び出して承認を実行し、結果をWebAuthenticationResultに書き込みます。 その後、アプリケーションを起動すると、承認ウィンドウが表示されます。



次に、switchステートメントを使用して、承認の結果を確認し、適切なアクションを実行します。 ネットワークに障害が発生した場合、エラーメッセージが表示され、認証が成功した場合、access_tokenおよびuser_idを示すメッセージが表示されます。 サーバーの応答は次のようになります。

REDIRECT_URI# access_token = 533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in = 86400&user_id = 8492


あとは、access_token行とuser_id行から取得してそれらを使用するだけです。 これを行うには、認証の成功に関するメッセージの代わりに、次のコードを記述します。

 char[] separators = { '=', '&' }; string[] responseContent = responseString.Split(separators); string accessToken = responseContent[1]; int userId = Int32.Parse(responseContent[5]); MessageDialog dialogSuccess = new MessageDialog("access_token = "+accessToken+ "\nuser_id = "+userId); dialogSuccess.ShowAsync();
      
      





これで、認証に成功すると、access_tokebとuser_idのみが表示されるメッセージが表示されます。



以上で、取得したトークンとIDはどのAPIでも呼び出すことができます。

PSもしあなたが興味があるなら、以下の投稿で最も興味深く複雑なAPI関数を検討します。それらのほとんどは同じ方法で呼ばれているからです。

プログラミングで頑張ってください。



All Articles