30 рдорд┐рдирдЯ рдореЗрдВ Oauth 2 рдкреНрд░рджрд╛рддрд╛

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдПрдХ рджрд┐рди рдЖрдк рд░реЗрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЕрдкрдиреЗ рд░реВрдмреА рдХреЛ oauth2 рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдЕрдм рдЕрдзрд┐рдХрд╛рдВрд╢ рд░реЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдбреИрд╡рд┐рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд░рддреНрди рдХреЗ рд╕рд╛рде oauth2 рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рд░ рдХреЛрдИ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЖрдпрд╛, рдЗрд╕рд▓рд┐рдП рдорд┐рд▓рддреЗ рд╣реИрдВ - devise_oauth2_providable ред рдЗрд╕ рд░рддреНрди рдХреЗ рд╕рд╛рде, рдПрдХ oauth2 рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдПрдХреАрдХрд░рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЖрдкрдХреЛ рд╕реНрдЯреЛрд░ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд▓реЗрдЧрд╛ред


рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо Gemfile рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

gem 'devise_oauth2_providable' 


рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдмрдВрдбрд▓ рдЪрд▓рд╛рдПрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓реЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рднреА oauth рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдордгрд┐ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рд╣рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкреЗрди рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рд╣реИ

 class CreateOauth2Schema < ActiveRecord::Migration def self.up Devise::Oauth2Providable::Schema.up(self) end def self.down Devise::Oauth2Providable::Schema.down(self) end end 

рдореЙрдбрд▓ рдореЗрдВ рдЖрдк oauth2 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:

 devise :oauth2_providable, :oauth2_refresh_token_grantable, :oauth2_authorization_code_grantable 

рд╡рд╣ рд╕рдм рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рдорд╛рдорд▓реЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП, рдПрдХ рддреИрдпрд╛рд░-рддреИрдпрд╛рд░ рдЪреАрдЬрд╝ рдбреЗрд╡рд┐рд╕-рдУрдЙрде2-рдкреНрд░реЛрд╡рд╛рдЗрдбрд░-рдХреНрд▓рд╛рдЗрдВрдЯ рднреА рд╣реИ , рдЬреЛ рд╕рд┐рдирд╛рддреНрд░рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЧреНрд░рд╛рд╣рдХ рдореЙрдбрд▓ рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЧреНрд░рд╛рд╣рдХ рдмрдирд╛рдПрдВ:

 Client.create( :name => "Sinatra Client", :redirect_uri => "http://localhost:9393/oauth/callback", :website => "http://localhost:9393/", :identifier => "120094574673767", :secret => "b54dc82476af2814e620b86776c42c0e" ) 

рдлрд┐рд░, рд╣рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд░рддреНрдиреЛрдВ рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рдЗрдВрдЯ рдлреЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ, рдЧреЗрдЯ рдореЗрдердб '/ oauth / рдХреЙрд▓рдмреИрдХ' рдХреЛ рдПрдбрд┐рдЯ рдХрд░реЗрдВред рд╡рд╣рд╛рдВ рдЖрдкрдХреЛ рд▓рд╛рдЗрди рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА

 access_token.get('/me').body 

рдФрд░ рдкреЗрдЬ рдкрд░ 'рдореБрдЭреЗ /' рдХреЛ рдЙрддреНрддреАрд░реНрдг рдХрд░реЗрдВ, рдЬреЛ рдПрдХ рд╕рдлрд▓ рд▓реЙрдЧрд┐рди рдХреЗ рдмрд╛рдж рдореБрдЦреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣рдореЗрдВ рджреЗрдЧрд╛ред рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкреГрд╖реНрда рдмрдирдиреЗ рджреЗрдВ:

 access_token.get('/').body 

рд╣рдо рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

 bundle exec shotgun 

рд╕рд┐рдирд╛рддреНрд░рд╛ рд╕рд░реНрд╡рд░ 9393 рдкреЛрд░реНрдЯ рдкрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рд╣рдо рдкреГрд╖реНрда http: // localhost: 9393 / oauth / start рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рд╣рдо рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде 3000 рд╡реЗрдВ рдкреЛрд░реНрдЯ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ, рд╡рд╣рд╛рдВ рд╣рдо рд╕рд┐рдирд╛рддреНрд░рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдкрд╣реБрдВрдЪ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХреГрдд рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рд░реЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдореБрдЦреНрдп рдкреГрд╖реНрда рд╣рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред ред

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


All Articles