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 更有用。设计更全面!