Я пытаюсь интегрировать API-интерфейс YouTrack REST в мое мобильное приложение, и мне нужно скопировать часть входа этого приложения: https://github.com/JetBrains/youtrack-mobile
Мое приложение построено на Expo React Native, но приложение мне нужнополучить логин от, кажется, на обычном React Native.
Трудно понять логику этих концепций:
- как я могу авторизоваться только зная имя пользователя и пароль?
- должно ли мое приложение каким-либо образом запрашивать идентификатор сервиса и секрет сервиса у API?
Застрял в этом уже довольно давно.Любая помощь приветствуется.
Код моего сетевого запроса:
obtainTokenByCredentials() {
return this.obtainToken([
'grant_type=password',
`&username=${encodeURIComponent(this.state.username)}`,
`&password=${encodeURIComponent(this.state.password)}`,
`&scope=${encodeURIComponent('Hub YouTrack')}`,
'&access_type=offline'
].join(''));
}
obtainToken(body) {
return fetch('http://youtrack.XXX.com/hub/api/rest/oauth2/token', {
method: 'POST',
headers: {
'Accept': 'application/json, text/plain, */*',
//'Authorization': `Basic ${makeBtoa(`${this.state.serviceId}:${this.state.serviceSecret}`)}`,
'Content-Type': 'application/x-www-form-urlencoded',
},
body: body,
})
.then(async res => {
console.log(`Got result from YT: ${res && res.status}`);
console.log(`Response body: ${res && res._bodyText}`);
return res.json();
})
.then(res => {
if (res.error) {
throw res;
}
return res;
});
}