私も同じ問題を抱えていました。
API の Sessions コントローラーに次の行がありました。
warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#failure")
ユーザーがログインしてセッションを作成していました(最初は気づきませんでした)
解決策は、これに似たものを使用することです(ブログ投稿にあります):
@user=User.find_by_email(email.downcase)
if @user.nil?
render :status=>401, :json=>{:message=>"Invalid email or password."}
return
end
# http://rdoc.info/github/plataformatec/devise/master/Devise/Models/TokenAuthenticatable
@user.ensure_authentication_token!
if not @user.valid_password?(password)
logger.info("User #{email} failed signin, password \"#{password}\" is invalid")
render :status=>401, :json=>{:message=>"Invalid email or password."}
else
render :status=>200, :json=>{:token=>@user.authentication_token}
end
基本的にユーザーをログインさせるのではなく、トークンを取得します。ログアウトを除くアプリケーションの他の部分は正常に機能していました。