Возникли проблемы с получением refresh_token в браузере. Не могу прочитать XML-ответ - PullRequest
0 голосов
/ 18 мая 2019

Я, в основном, фронтенд, и у меня возникли некоторые проблемы с возвратом данных из вызова API. Я думаю, что просто не понимаю что-то правильно, так что это очень разочаровывает. Интересно, кто-нибудь может предложить какой-нибудь вклад?

Я звоню так:

var config = {
        headers: {
          'Access-Control-Allow-Origin': '*',
          'Content-Type': 'application/xml',
        },
        proxy: {
          host: '127.0.0.1',
          port: 3000
        }
      };

      axios
        .post(
          `https://login.salesforce.com/services/oauth2/token?grant_type=authorization_code&redirect_uri=http://localhost:3000/callback/&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&code=${authCode}`,
          config
        )
        .then(res => {
          console.log(`statusCode: ${res.statusCode}`);
          console.log('Result:', res);
        })
        .catch(error => {
          console.error('Error:', error);
        });

Тогда я получаю ответ:

Access to XMLHttpRequest at 'https://login.salesforce.com/services/oauth2/token?
grant_type=authorization_code&redirect_uri=http://localhost:3000/callback/&client_id=CLINET_ID&client_secret=CLIENT_SECRET&code=AUTH_CODE' 
from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 
'Access-Control-Allow-Origin' header is present on the requested resource.

и это:

POST https://login.salesforce.com/services/oauth2/token?grant_type=authorization_code&redirect_uri=https://localhost:3000/callback/&client_id=3[ID]&client_secret=[SECRET]&code=[CODE] 400 (Bad Request)

Но если я добавлю эту ссылку в браузер: https://login.salesforce.com/services/oauth2/token?grant_type=authorization_code&redirect_uri=http://localhost:3000/callback/&client_id=CLINET_ID&client_secret=CLIENT_SECRET&code=AUTH_CODE Я увижу, что это файл XML со всей необходимой мне информацией. Так почему я не могу просто получить эту информацию в своем ответе?

Вот что я вижу, когда вставляю ссылку в браузере:

<OAuth>
<access_token>
{Token}
</access_token>
<refresh_token>
{Token}
</refresh_token>
<signature>{Signature}</signature>
<scope>refresh_token api full</scope>
<id_token>
{Token}
</id_token>
<instance_url>https://um5.salesforce.com</instance_url>
<id>
{ID}</id>
<token_type>Bearer</token_type>
<issued_at>1558167449074</issued_at>
</OAuth>

Я, очевидно, достал настоящие жетоны. Это информация мне нужна.

Пожалуйста, кто-нибудь может мне помочь в доступе к этой информации XML на внешнем интерфейсе? Если бы я сделал запрос на Почтальон, я получаю именно то, что мне нужно.

1 Ответ

0 голосов
/ 20 мая 2019

Я исправил это с помощью этого кода на Node-сервере и, похоже, получил нужный мне ответ:

var request = require('request');

var options = {
      url: `https://login.salesforce.com/services/oauth2/token?grant_type=authorization_code&redirect_uri=http://localhost:3000/callback/&client_id=CLIENT_ID.&client_secret=CLIENT_SECRET&code=${token}`
    };

    function callback(error, response, body) {
      if (!error) {
        console.log('Body: ', body);
      } else {
        console.log('Error: ', error);
      }
    }

Надеюсь, это кому-нибудь поможет.Документация Salesforce очень разрозненная и сложная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...