2015-05-24 3 views
1

Я пишу приложение, используя apify api для личного использования. Это приложение node.js. Я вызываю конечную точку accounts.spotify.com/authorize и перенаправляюсь на логин spotify, но я не могу войти в систему, используя либо Facebook, либо указать имя пользователя/пароль.Authenticating for spotify web api not working

Когда я пытаюсь войти в систему через Facebook, я получаю эту ошибку: «Приложение не установлено: это приложение по-прежнему находится в режиме разработки, и у вас нет доступа к нему. Перейдите к зарегистрированному тестовому пользователю или попросите app admin для разрешений ". Когда я пытаюсь войти в систему с помощью имени пользователя/пароля, я получаю эту ошибку: «Ой, что-то пошло не так, попробуйте еще раз или ознакомьтесь с нашей справочной областью»

Вот код. На данный момент это не делает ничего, кроме перенаправления на регистрацию имени. Я отредактировал URL-адрес client_id и перенаправления. URL-адрес переадресации доступен, если я ввожу его непосредственно в браузер. Я считаю, что с тех пор, как я получаю страницу регистрации на идентификацию, я нахожусь в правильном шаге, но, возможно, пропустил что-то в настройке приложения или в коде.

Может кто-нибудь сказать мне, как пройти мимо этой ошибки? Благодарю.

var request = require('request'); 
function SpotifyLogin(req,res) 
{ 
    var options = 
    { 
     url: 'http://accounts.spotify.com/authorize/?client_id=<redacted>&response_type=code&redirect_uri=<redacted>&scope=user-read-private&state=34fFs29kd09&show_dialog=true', 
     followAllRedirects: true, 
     followRedirect: true 
    }; 

    request(options, function(error, response, body) 
    { 
     res.send(body); 
     console.log(body); 
     console.log(response.toJSON()); 
    }).on('error', function(e) { 
     res.setHeader('Content-Type', 'text/html'); 
     res.send("<html><body>"+ e.message +"</body></html>"); 
     console.log("Got error: " + e.message); 
    }); 

} 
+0

Это правильно в URL? '' – SerCrAsH

+0

Нет, я достал настоящий client_id и redirect_uri и заменил их текстом «redacted». –

+0

Не могли бы вы попробовать URL '/ authorize' и авторизовать свое приложение, просто открыв его в браузере? Если после входа в систему произошла ошибка, в консоли разработчика должно отображаться описание ошибки. (Проверить сеть и/или консоль.) –

ответ

0

Благодаря jooon, который сделал предложение в комментариях, если мой сервер возвращает страницу, которая просто перенаправляет браузер на https: /accounts.spotify.com/authenticate с соответствующими параметрами, поток аутентификации работает правильно , в результате чего вызывается вызов моего обратного вызова.

Здесь с фиксированным URL-адресом hardcoded и my client_id и redirect_url скрыты.

function SpotifyLogin(req, res) 
{ 
    res.writeHead(302, { 
     'Location': encodeURI("https://accounts.spotify.com/authorize/?client_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&response_type=code&redirect_uri=http://xxxxxxx/callback/&scope=playlist-read-private playlist-read-collaborative playlist-modify-public playlist-modify-private streaming user-follow-modify user-follow-read user-library-read user-library-modify user-read-private user-read-birthdate user-read-email&state=34fFs29kd09&show_dialog=true") 
    }); 
    res.send(); 
}