それでは始めましょう。 Gemfileを編集し、そこに次の行を追加します。
gem 'devise_oauth2_providable'
通常どおり、bundleを実行します。 次に、すべてのoauthクライアントデータが保存されるクライアントラベルを作成する必要があります。 幸い、gemの開発者は、移行ペンを書く必要がないことを確認しました
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
以上です。 この問題をテストするだけです。
このために、Sinatraで書かれた既成のdevise-oauth2-provider-clientもあります 。
最初に、クライアントモデルでテストクライアントを作成します。
Client.create( :name => "Sinatra Client", :redirect_uri => "http://localhost:9393/oauth/callback", :website => "http://localhost:9393/", :identifier => "120094574673767", :secret => "b54dc82476af2814e620b86776c42c0e" )
次に、リポジトリのクローンを作成し、アプリケーションがバンドルを使用するように要求するgemを配置します。
次に、クライアントフォルダに移動し、getメソッド「/ oauth / callback」を編集します。 そこで行を修正する必要があります
access_token.get('/me').body
そして、メインアプリケーションがログイン成功後に私たちに与えるページ上の熱心な「/私」。 これをテストのメインページにします。
access_token.get('/').body
サーバーを起動します。
bundle exec shotgun
Sinatraサーバーはポート9393で起動します。
http:// localhost:9393 / oauth / startページに移動し、すべてが正しく行われた場合、railアプリケーションで3000番目のポートにリダイレクトされます。そこで、Sinatra Clientアクセスを確認し、既に承認された状態に戻り、railアプリケーションのメインページが表示されます。