Тестируя Поток веб-сервера OAuth 2.0 для интеграции веб-приложений в Salesforce, я нашел способ согласовать токен доступа, сделав что-то несколько странное.
Вот сценарий .
Я создал две учетные записи:
- phdezann+user01-mbpt@force.com
- phdezann+user02-8wl6@force.com
Со второй учетной записью я Мы создали New Connected App
и включили Enable OAuth Settings
и получили пару clientId и secretId, часть протокола OAuth.
Затем я запросил код авторизации, перейдя по адресу:
https://login.salesforce.com/services/oauth2/authorize?client_id=<client_id_of_user02_instance>&redirect_uri=http://localhost:8080&response_type=code
Здесь , и это интересная часть , я вошел в систему с user01 и смог получить код авторизации в обратном вызове.
И, наконец, я попытался преобразовать этот код авторизации в токен доступа:
curl \
--location \
--request POST 'https://login.salesforce.com/services/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'code=<authorization_code_from_user01>' \
--data-urlencode 'client_id=<client_id_of_user02_instance>' \
--data-urlencode 'client_secret=<client_secret_of_user02_instance>' \
--data-urlencode 'redirect_uri=http://localhost:8080'
И это сработало. Я получил:
{
"access_token": "00D2X00000....",
"signature": "CSfC0khkT7...",
"scope": "api",
"instance_url": "https://eu13.salesforce.com",
"id": "https://login.salesforce.com/id/00D2X000003IgQFUA0/0052X00000AP6AdQAL",
"token_type": "Bearer",
"issued_at": "1596728532049"
}
Я действительно не понимаю, как это возможно, я наверняка что-то здесь пропустил.