У меня есть структура папок в моем приложении Docker:
nginx/
dev.conf
client/
src/
Spotify.js
вот как я звоню redirect uri
из client
:
Spotify.js
class SpotifyAuth extends Component {
constructor () {
super()
this.handleRedirect = this.handleRedirect.bind(this)
}
getHashParams() {
var hashParams = {};
var e, r = /([^&;=]+)=?([^&;]*)/g,
q = window.location.hash.substring(1);
e = r.exec(q)
while (e) {
hashParams[e[1]] = decodeURIComponent(e[2]);
e = r.exec(q);
}
return hashParams;
}
handleRedirect = (e) => {
axios.get("http://localhost:8888" )
.then(response => response.json())
.then(data => console.log(data))
.catch((err) => { console.log(err); });
//e.preventDefault();
}
render () {
return (
<div className='button__container'>
<button className='button' onClick={this.handleRedirect}
><strong>CONNECT YOUR SPOTIFY ACCOUNT</strong>
</button>
</div>
)
}
}
export default SpotifyAuth;
докер-Compose-dev.yml
nginx:
build:
context: ./services/nginx
dockerfile: Dockerfile-dev
restart: always
ports:
- 80:80
- 8888:8888
depends_on:
- web
- client
client:
build:
context: ./services/client
dockerfile: Dockerfile-dev
volumes:
- './services/client:/usr/src/app'
- '/usr/src/app/node_modules'
ports:
- 3007:3000
environment:
- NODE_ENV=development
- REACT_APP_WEB_SERVICE_URL=${REACT_APP_WEB_SERVICE_URL}
depends_on:
- web
Nginx / dev.conf
server {
listen 80;
location / {
proxy_pass http://client:3000;
proxy_redirect default;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
Как правильно авторизовать это и обрабатывать токен от Spotify.js
?
EDIT:
Я попробовал решение, предложенное в ответе ниже, сначала с localhost: 8888, а затем с localhost: 3000 (оба действительны как URL-адреса перенаправления в Spotify dev.)
Работает только с 8888, и даже так:
Приложение сбрасывает token
в localStorage
, но висит там со следующим предупреждением в браузере:
тогда, если я нажму на OK, и только если IF, он перенаправляет.
что не так?