[英]Custom strategy for Omniauth
我需要在rails中為一個應用實現自定義策略,軟件版本:Rails 5.0.7.2 ruby 2.3.2p217 (2016-11-15 revision 56796) [x86_64-linux] Bundler version 1.16.6
這些是我添加的文件:
# config/initializers/omniauth.rb
module OmniAuth
module Strategies
# tell OmniAuth to load our strategy
autoload :Platform, 'lib/strategies/platform.rb'
end
end
Rails.application.config.middleware.use OmniAuth::Builder do
# pass the 2 parameters to the constructor
provider :platform, "Client Id", "Client Secret",
client_options: {
site: "https://my.auth.provider",
user_info_url: "/connect/userinfo"
}
end
現在,在我的 lib/strategies/ 目錄中,我創建了我的策略文件:
# lib/strategies/platform.rb
require 'omniauth-oauth2'
module OmniAuth
module Strategies
class Platform < OmniAuth::Strategies::OAuth2
option :name, :platform
option :client_options, {
:site => "https://my.auth.provider",
:authorize_url => "/connect/authorize",
:user_info_url => "/connect/userinfo"
}
uid { raw_info["id"] }
info do
{
:email => raw_info["email"]
# and anything else you want to return to your API consumers
}
end
def raw_info
@raw_info ||= access_token.get('/connect/userinfo/me.json').parsed
end
def callback_url
full_host + script_name + callback_path
end
end
end
end
我在 config/routes.rb 中注冊了回調 URL:
#OAuth2 Generic
get "/auth/:provider/callback" => "sessions#create"
現在,我正在嘗試配置的這個應用程序已經為 Google、Twitter 和 Facebook 設計並啟用了 omniauth,但由於某種原因,我的 URL 從未注冊過。 我錯過了什么? 我該怎么辦? 我希望有
user_platform_omniauth_authorize_path and
user_platform_omniauth_callback_path
將以下內容添加到您的模型中:
class User < ApplicationRecord
devise :omniauthable, omniauth_providers: %i[platform]
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.