Spotify 的 Omniauth
Spotify Omniauth
我正尝试在 rails 4 中为 spotify 使用 OmniAuth。我几乎成功了,但由于某种原因,重定向 URI 不起作用。 我正在使用带有 omniauth 的 Devise这些是我的文件:
User.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable, :omniauth_providers => [:spotify]
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.provider = auth.provider
user.uid = auth.uid
user.email = auth.info.email
user.password = Devise.friendly_token[0,20]
end
end
end
我的回调控制器处理回调
class CallbacksController < Devise::OmniauthCallbacksController
def spotify
@user = User.from_omniauth(request.env["omniauth.auth"])
sign_in_and_redirect @user
end
end
我的 Devise.rb 片段:
config.omniauth :spotify, client_id, client_secret,scope: 'playlist-read-private user-read-private user-read-email'
我的Routes.rb
Rails.application.routes.draw do
devise_for :users, :controllers => { :omniauth_callbacks => 'callbacks' }
get '/users/auth/callback', to: 'callbacks#spotify'
end
最后,link 导致登录:
<%= link_to 'Sign in with Spotify', user_omniauth_authorize_path(:spotify) %>
但出于某种原因,每当我尝试登录 spotify 时,它都会显示 无效的重定向 URI
好的,我找到了解决我的特定问题的方法:
当它给我“无效的重定向 URI”的错误时,我查看了它试图去的 URI,然后我简单地使用了它。
然后我遇到了第二个错误,它给了我一个 SSL 证书错误,所以我使用“gem 认证”来修复它。然后,它给了我第三个未经授权访问的问题(回调返回一个失败的请求)。发生的事情是我尝试使用 OmniAuth 两次。我有两个文件:
A) OmniAuth.rb
和 B) Devise.rb
这两个文件都在进行 API 调用,而且它搞砸了。因此,对于遇到此问题的任何人 - 不要同时使用 omniauth 和 devise。老实说,在最初的第一次小插曲之后,我发现设计比制作自己的用户模型并对其应用 omniauth 更有用。设计更全面!
我正尝试在 rails 4 中为 spotify 使用 OmniAuth。我几乎成功了,但由于某种原因,重定向 URI 不起作用。 我正在使用带有 omniauth 的 Devise这些是我的文件:
User.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable, :omniauth_providers => [:spotify]
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.provider = auth.provider
user.uid = auth.uid
user.email = auth.info.email
user.password = Devise.friendly_token[0,20]
end
end
end
我的回调控制器处理回调
class CallbacksController < Devise::OmniauthCallbacksController
def spotify
@user = User.from_omniauth(request.env["omniauth.auth"])
sign_in_and_redirect @user
end
end
我的 Devise.rb 片段:
config.omniauth :spotify, client_id, client_secret,scope: 'playlist-read-private user-read-private user-read-email'
我的Routes.rb
Rails.application.routes.draw do
devise_for :users, :controllers => { :omniauth_callbacks => 'callbacks' }
get '/users/auth/callback', to: 'callbacks#spotify'
end
最后,link 导致登录:
<%= link_to 'Sign in with Spotify', user_omniauth_authorize_path(:spotify) %>
但出于某种原因,每当我尝试登录 spotify 时,它都会显示 无效的重定向 URI
好的,我找到了解决我的特定问题的方法:
当它给我“无效的重定向 URI”的错误时,我查看了它试图去的 URI,然后我简单地使用了它。
然后我遇到了第二个错误,它给了我一个 SSL 证书错误,所以我使用“gem 认证”来修复它。然后,它给了我第三个未经授权访问的问题(回调返回一个失败的请求)。发生的事情是我尝试使用 OmniAuth 两次。我有两个文件:
A) OmniAuth.rb 和 B) Devise.rb
这两个文件都在进行 API 调用,而且它搞砸了。因此,对于遇到此问题的任何人 - 不要同时使用 omniauth 和 devise。老实说,在最初的第一次小插曲之后,我发现设计比制作自己的用户模型并对其应用 omniauth 更有用。设计更全面!