рд╡рд┐рдВрдбреЛрдЬ 8 рдХреЗ рддрд╣рдд OAuth 2.0 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реАрдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг

рдЖрдЬ рд╣рдо рд╡рд┐рдВрдбреЛрдЬ 8 рдХреЗ рддрд╣рдд VKontakte рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреЗрдЬ http://vk.com/developers.php рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ,


рдЕрдЧрд▓рд╛, рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди-рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ рд╕реНрдорд╛рд░реНрдЯрдлрд╝реЛрди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдХрдиреЗрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдореЛрдмрд╛рдЗрд▓ рдлреЛрди рдкрд░ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ рдЬреЛ рдЖрд╡реЗрджрди рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдПрдХ рд╕рдлрд▓ рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рдж, рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рдВрдкрд╛рджрди рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВрдЧреЗ, рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдЗрд╕ рдкреГрд╖реНрда рд╕реЗ рд╣рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдИрдбреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЖрдк рдЗрд╕реЗ рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдФрд░ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рддреЛ, рдлрд░реНрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдм рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд░ рдЬрд╛рдПрдВред
рд╣рдо рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдХреИрд╕реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдм рд╣рдо рд╕реАрдзреЗ рдХреЛрдбрд┐рдВрдЧ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмреНрд▓реИрдВрдХрдРрдк рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред

рд╣рдо OAuth 2.0 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХреГрдд рдХрд░реЗрдВрдЧреЗ ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо MainPage.xaml.cs рдкреЗрдЬ рдкрд░ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдПрдХ рдирдпрд╛ OAuthVk () рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ WebAuthenticationBroker рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрд░реЗрдЧрд╛, рдпрд╣ рдХреНрдпрд╛ рд╣реИ - рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдПрдХ рдорд╛рдирдХ рд╡рд┐рдВрдбреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд▓рд┐рдВрдХ рдЦреБрд▓рддрд╛ рд╣реИред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдВрдбреЛ рдореЗрдВ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдмреНрд░реЛрдХрд░ рдЕрдкрдирд╛ рдХрд╛рдо рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рдлрд▓ рд╣реБрдЖ рдерд╛ рдпрд╛ рдирд╣реАрдВред
рдпрд╣рд╛рдБ рд╣рдорд╛рд░реА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:
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; } } 

рдЕрдм рдереЛрдбрд╝рд╛ рдореИрдВрдиреЗ рдЬреЛ рд▓рд┐рдЦрд╛ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред VUUri рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ OAuth 2.0 рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдпрд╣рд╛рдВ рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВ ред рд▓рд╛рдЗрди рдХрд╣рддреА рд╣реИ client_id - рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рд╕реНрдХреЛрдк - рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ , рдЬреЛ рдпрд╣рд╛рдВ рд╕реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВ , рдореИрдВрдиреЗ 9999999 рд▓рд┐рдЦрд╛ рд╣реИред рдпрд╣ рд╕рдм рдХреБрдЫ рдПрдХреНрд╕реЗрд╕ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ access_token рдЕрдкрдирд╛ рдорд╛рди рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдРрд╕рд╛ рд╣рд░ рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдСрдерд░рд╛рдЗрдЬреЗрд╢рди рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рд╕реЗрд╡реНрдб рдПрдХреНрд╕реЗрд╕_рдЯреЛрдХрди рддреБрд░рдВрдд рд▓реЗ рд▓реЗрддрд╛ рд╣реИред рдФрд░ user_id, рдФрд░ рдЙрдиреНрд╣реЗрдВ API рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдкреЛрд╕реНрдЯ рдореЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AuthenticateAsync рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ WebAuthenticationResult рдкрд░ рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрджрд┐ рдЖрдк рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдВрдбреЛ рджреЗрдЦреЗрдВрдЧреЗ:

рдЕрдЧрд▓рд╛, рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рд╣рдо рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдЪрд┐рдд рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ; рдпрджрд┐ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрди рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ access_token рдФрд░ user_id рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:
REDIRECT_URI # access_token = 533bf01e11f55b536a565b57531ad114461ae8736d6506a3 рдФрд░ expires_in = 86400 рдФрд░ &_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 рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдВрдЧреЗред

рдмрд╕ рдЗрддрдирд╛ рд╣реА, рд╣рдореЗрдВ рдЬреЛ рдЯреЛрдХрди рдФрд░ рдЖрдИрдбреА рдорд┐рд▓реА рд╣реИ, рдЙрд╕реЗ рдХреЛрдИ рднреА рдПрдкреАрдЖрдИ рдХрд╣ рд╕рдХрддрд╛ рд╣реИред
PS рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЬрдЯрд┐рд▓ рдПрдкреАрдЖрдИ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЕрдЪреНрдЫреА рдХрд┐рд╕реНрдорддред


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


All Articles