0
我使用omniauth youtube和谷歌oauth2寶石通過youtube登錄。這一切都有效,只要用戶已經使用他們嘗試登錄的帳戶創建了YouTube頻道。處理youtube Ominauth 401錯誤
當用戶嘗試沒有YouTube頻道是錯誤登錄了以下消息:
OAuth2::Error
<HTML>
<HEAD>
<TITLE>NoLinkedYouTubeAccount</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>NoLinkedYouTubeAccount</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
我怎麼能處理此錯誤,使用戶無論在那裏他們可以發送到他們的YouTube帳戶創建他們的YouTube頻道,然後使用有效的登錄憑據重定向回該網站,或者發送回頁面,該頁面提供有關如何創建YouTube頻道並重試的說明?
我的代碼如下:
user.rb
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
user.email = auth.info.email
user.oauth_token = auth.credentials.token
user.oauth_expires_at = Time.at(auth.credentials.expires_at)
user.picture = auth.info.image
user.save!
end
end
session_controller:
def create
user = User.from_omniauth(env["omniauth.auth"])
session[:user_id] = user.id
redirect_to root_path, notice: "Signed in"
end
路線
match 'auth/youtube/callback', to: 'sessions#create'
match 'auth/failure', to: redirect('/')
match 'signout', to: 'sessions#destroy', as: 'signout'
omniauth.rb
OmniAuth.config.on_failure = SessionsController.action(:oauth_failure)
Rails.application.config.middleware.use OmniAuth::Builder do
provider :youtube, YOUTUBE_KEY, YOUTUBE_SECRET, { access_type: 'online', approval_prompt: ''}
end
是的我認爲你是對的傑森重定向到一些指示。這似乎沒有捕捉到異常,或者如果是,重定向沒有被執行。我已經嘗試了應用程序控制器和會話控制器中的代碼,但無濟於事,這是它的目的? – dodgerogers747