Может кто-нибудь объяснить логику СЕРВИС ID и СЕРВИС СЕКРЕТ? - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь интегрировать 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;
    });
}
...