ASP.NET MVC 3 рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдлреЗрд╕рдмреБрдХ OAuth рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░реЗрдВред рднрд╛рдЧ 1: рдкреНрд░рд╛рдзрд┐рдХрд░рдг

рдЖрдкрдХреЛ рдлреЗрд╕рдмреБрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдлреЗрд╕рдмреБрдХ рдкрд░ 500 рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВред рдХрдИ рд╕рд╛рдЗрдЯреЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рднрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХрд╛ рдлреЗрд╕рдмреБрдХ рдкрд░ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрдЯ рдкрд░ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ 5-10 рдорд┐рдирдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

рддреЛ, рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ...

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдХреЛ рдлреЗрд╕рдмреБрдХ рдкрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
developers.facebook.com/setup
рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ 2 рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреА: рдРрдк рдЖрдИрдбреА рдФрд░ рдРрдк рд╕реАрдХреНрд░реЗрдЯред

рдЕрдм рдПрдХ рдирдпрд╛ ASP.NET MVC 3 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред
рдЫрд╡рд┐

рд╣рдореЗрдВ Json рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдк рдпрд╣рд╛рдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
using Newtonsoft.Json.Linq;
рдпрд╛ NuGet рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ " Install-Package Newtonsoft.Json " Install-Package Newtonsoft.Json ред

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрд╕рдбреАрдХреЗ рд▓реЛрдб рдХрд░реЗрдВред

Copy Source | Copy HTML
  1. $ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝)ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ( рдлрд╝рдВрдХреНрд╢рди ) ({
  2. if (document.getElementById ( 'fb-root' )! = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд) {
  3. var e = document.createElement ( 'рд╕реНрдХреНрд░рд┐рдкреНрдЯ' );
  4. e.type = 'text / javascript' ;
  5. e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js' ;
  6. e.async = true ;
  7. document.getElementById ( 'fb-root' ) .appendChild (e);
  8. }
  9. });


рдЕрдЧрд▓рд╛, рд╣рдо рдРрдк рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдкреЗрдЬ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдлреЗрд╕рдмреБрдХ рдкрд░ рдбреЛрдореЗрди рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

Copy Source | Copy HTML
  1. FB.init ({
  2. appId: 'Your_APP_ID' , рдХреБрдХреА: рд╕рдЪ ,
  3. рд╕реНрдерд┐рддрд┐: рд╕рдЪ , xfbml: рд╕рдЪ
  4. });


рд╣рдо рд╕рд╛рдЗрдЯ рдкреГрд╖реНрда рдкрд░ рдлреЗрд╕рдмреБрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдЧрд┐рди рдмрдЯрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

Copy Source | Copy HTML
  1. < fb: рд▓реЙрдЧрд┐рди-рдмрдЯрди рдкрд░рдорд┐рдЯ = "рдИрдореЗрд▓, user_checkins"
  2. onlogin = "onConnect ();" autologoutlink = "false">
  3. </ fb: рд▓реЙрдЧрд┐рди-рдмрдЯрди >


xmlns:fb="http://www.facebook.com/2008/fbml" рдирд╛рдо рд╕реНрдерд╛рди рдпрд╣рд╛рдБ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ xmlns:fb="http://www.facebook.com/2008/fbml" ред
рдЖрдк рдпрд╣рд╛рдВ рдПрдХ рдмрдЯрди рдЬрдирд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

Fb- рдмрдЯрди рдмрдЯрди рдХреЗ onlogin рдШрдЯрдирд╛ рдХреЛ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдкреБрд╖реНрдЯрд┐ рдпрд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЫрд╡рд┐

OnConnect () рд╡рд┐рдзрд┐ рдХреЛ рдСрдирд▓реЛрдЬреЗрди рдИрд╡реЗрдВрдЯ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
access_token ред

Copy Source | Copy HTML
  1. рдлрдВрдХреНрд╢рди рдСрдирдХрдиреЗрдХреНрдЯ () {
  2. FB.getLoginStatus ( рдлрд╝рдВрдХреНрд╢рди (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) {
  3. рдЕрдЧрд░ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рд╕рддреНрд░) {
  4. window.location = "../Account/FbLogin?token=" + response.session.access_token;
  5. } {
  6. // рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рджреНрдж рдХрд░рддрд╛ рд╣реИ
  7. }
  8. });
  9. };


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдХрд╛рдЙрдВрдЯрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреА FbLogin () рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ:

Copy Source | Copy HTML
  1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд▓рдбрд╝рд╛рдИред FbLogin ( рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЯреЛрдХрди)
  2. {
  3. WebClient рдЧреНрд░рд╛рд╣рдХ = рдирдпрд╛ WebClient ();
  4. string JsonResult = client.DownloadString ( рд╕реНрдЯреНрд░рд┐рдВрдЧ .Concat ( "https://graph.facebook.com/me?access_token=" , рдЯреЛрдХрди));
  5. рдЬреЛрдмрдЬреЗрдХреНрдЯ jsonUserInfo = JObject.Parse (JsonResult);
  6. UInt64 facebook_userID = jsonUserInfo.Value < UInt64 > ( "рдЖрдИрдбреА" );
  7. string username = jsonUserInfo.Value < string > ( "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо" );
  8. string email = jsonUserInfo.Value < string > ( "email" );
  9. // рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ
  10. FormAuthentication.SetAuthCookie (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо, рд╕рддреНрдп );
  11. RedirectToAction ( "рдЗрдВрдбреЗрдХреНрд╕" , "рд╣реЛрдо" ) рд▓реМрдЯрд╛рдПрдВ ;
  12. }


рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдХреНрдпрд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рд╕рднреА рдХреЛрдб _LogOnPartial.cshtml :

Copy Source | Copy HTML
  1. @if (Request.IsAuthenticated)
  2. {
  3. < text > рд╕реНрд╡рд╛рдЧрдд < strong > @ User.Identity.Name </ strong > ! [@ Html.ActionLink ("рд▓реЙрдЧ рдСрдлрд╝", "рд▓реЙрдЧрдСрдлрд╝", "рдЦрд╛рддрд╛")] </ рдкрд╛рда >
  4. }
  5. рдЕрдиреНрдпрдерд╛
  6. {
  7. < fb: рд▓реЙрдЧрд┐рди-рдмрдЯрди рдкрд░рдорд┐рдЯ = "рдИрдореЗрд▓, user_checkins" onlogin = "onConnect ();" autologoutlink = "false"> </ fb: рд▓реЙрдЧрд┐рди-рдмрдЯрди >
  8. < div id = "fb-script" st yle = "рдбрд┐рд╕реНрдкреНрд▓реЗ: рдЗрдирд▓рд╛рдЗрди; рдорд╛рд░реНрдЬрд┐рди-рд▓реЗрдлреНрдЯ: 20px;">
  9. </ div >
  10. @: [@ Html.ActionLink ("рд▓реЙрдЧ рдСрди", "рд▓реЙрдЧрдСрди", "рдЦрд╛рддрд╛")]
  11. }
  12. < рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ = "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдкреНрд░рдХрд╛рд░ = "рдкрд╛рда / рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ" >
  13. window.fbAsyncInit = function () {
  14. FB.init ({appId: .in 177572352298948 тАЩ , рд╕реНрдерд┐рддрд┐: рд╕рдЪреНрдЪреА , рдХреБрдХреА: рдЭреВрдареА , xfbml: true });
  15. };
  16. рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдмрд╛рдж рдХрдиреЗрдХреНрдЯ () {
  17. FB.getLoginStatus ( рдлрд╝рдВрдХреНрд╢рди (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) {
  18. рдЕрдЧрд░ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред рд╕рддреНрд░) {
  19. window.location = "../Account/FbLogin?token=" + response.session.access_token;
  20. } {
  21. // рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд░рджреНрдж рдХрд░рддрд╛ рд╣реИ
  22. }
  23. });
  24. };
  25. $ (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝)ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ( рдлрд╝рдВрдХреНрд╢рди ) ({
  26. if (document.getElementById ( 'fb-root' )! = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд) {
  27. var e = document.createElement ( 'рд╕реНрдХреНрд░рд┐рдкреНрдЯ' );
  28. e.type = 'text / javascript' ;
  29. e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js' ;
  30. e.async = true ;
  31. document.getElementById ( 'fb-root' ) .appendChild (e);
  32. }
  33. });
  34. </ script >


рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ:
рдЫрд╡рд┐
рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд╛рдж:
рдЫрд╡рд┐

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


All Articles