Как получить токен доступа из API в реагировать родной - PullRequest
0 голосов
/ 04 января 2019

Я использую реагировать нативно, и я хочу получить токен доступа от API, который создается в Django с использованием аутентификации oAuth 2

Я передаю все детали, которые требуются, но я не знаю, почему яошибка получения неподдерживаемого типа гранта

fetch('MyApiUrl', {
            method: 'POST',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/x-www-form-urlencoded',
            },
            body: JSON.stringify({
                'grant_type': 'password',
                'username': 'MyUserNameSettedInApi',
                'password': 'PasswordSettedInApi',
                'client_id': 'MyClientId',
                'client_secret': 'MyClientSecret',
                'scope': 'read Write'
            })
        })
            .then((response) => response)     <----tried response.json() but giving same error of grant type
            .then((responseData) => {
                console.log(responseData);
            })

Мой ожидаемый результат: я хочу, чтобы токен доступа отображался, и я получаю

Response {type: "default", status: 400, ok: false, statusText: undefined, headers: Headers, …}
headers: Headers {map: {…}}
ok: false
status: 400
statusText: undefined
type: "default"
url: "http://MyUrl"
_bodyInit: "{"error": "unsupported_grant_type"}"
_bodyText: "{"error": "unsupported_grant_type"}"
__proto__: Object

, пожалуйста, помогите заранее, спасибо

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Установить библиотеку qs

npm install qs

Импортируйте его в свое приложение, и тогда вы сможете его отправить. Используйте qs.stringify , как показано ниже

fetch('http://localhost:8888/o/token',
       {
         method: 'POST',
         headers: {
           'Accept': 'application/json',
           'Content-Type': 'application/x-www-form-urlencoded;'
         },
         body: qs.stringify({
           'grant_type': 'password',
            'username': 'MyUserNameSettedInApi',
            'password': 'PasswordSettedInApi',
            'client_id': 'MyClientId',
            'client_secret': 'MyClientSecret',
         })
       })
0 голосов
/ 04 января 2019

tried response.json() but giving same error of grant type - это ответ с Вашего oauth-сервера.

response.json() преобразовать данные вашего ответа в строку, декодированную в json.

Измените свой код следующим образом:

let formData = new FormData();
formData.append('grant_type', 'password');
formData.append('username', 'MyUserNameSettedInApi');
formData.append('password', 'PasswordSettedInApi');
formData.append('client_id', 'MyClientId');
formData.append('client_secret', 'MyClientSecret');
formData.append('scope', 'read Write');

fetch('MyApiUrl', {
    method: 'POST',
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: formData
})
.then((response) => response.json())
.then((responseData) => {
    console.log(responseData);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...