为什么在收到错误时 Spotify 响应不允许我过去?

Why won't the Spotify response allow me to go past when an error is received?

我只是想查找用户,如果用户存在,亲爱的,如果不存在,我想说明...

# Install if you haven't already
require 'twilio-ruby'
require 'rspotify'

# Twilio Security Access
account_sid = 'enter_your_sid'
auth_token = 'enter_your_auth_token'

# Spotify User Lookup
def user_lookup(user_search)
    spotify_user = RSpotify::User.find(user_search)
end

# Crafted text message using Twilio
def text(account_sid, auth_token, message)
    client = Twilio::REST::Client.new account_sid, auth_token

    client.messages.create(
        from: '+twilio_number', # I guess you can use my number for testing
        to: '+personal_number', # Feel free to enter your number to get the messages
        body: message
    )
end

# Ask who you should lookup on Spotify
puts "Who would you like to look up? "
user_input_1 = gets.chomp

# Make sure the user exists
if user_lookup(user_input_1).id != user_input_1 # Test with "zxz122"
    msg = "Could not find that Spotify user!"
    text(account_sid, auth_token, msg)
    puts "Spotify user details send failure!"
else
    user_exist = user_lookup(user_input_1)
    user_profile_url = "https://open.spotify.com/user/#{user_input_1}"
    msg = "Check out #{user_input_1} on Spotify: #{user_profile_url}"
    text(account_sid, auth_token, msg)
    puts "Spotify user details have been sent!"
end

我不断收到的回复是...

`return!': 404 Resource Not Found (RestClient::ResourceNotFound)

那么为什么它没有命中我的 if 语句并触发 "Could not find that Spotify user!"??

为什么? RestClient 的创建者将 gem 设计为在资源不存在时引发异常(又名 returns a 404 not found)。

要解决此问题,只需将方法更改为:

def user_lookup(user_search)
  RSpotify::User.find(user_search) rescue false
end

并将您的 if ... else 块更改为:

if user_lookup(user_input_1)
  user_profile_url = "https://open.spotify.com/user/#{user_input_1}"
  msg = "Check out #{user_input_1} on Spotify: #{user_profile_url}"
  text(account_sid, auth_token, msg)
  puts "Spotify user details have been sent!"
else
  msg = "Could not find that Spotify user!"
  text(account_sid, auth_token, msg)
  puts "Spotify user details send failure!"
end