Я просто хочу создать временную организацию в CI/CD, подключиться к ней с помощью jsforce, чтобы делать запросы с помощью службы узлов, а затем уничтожить ее в конце CI/CD.
Вариант 1. Создайте новое подключенное приложение из моего CI/CD, используя метаданные основной организации
Проблема: невозможно автоматически получить идентификатор и секрет этого приложения.
Вариант 2 (наиболее осуществимый вариант): использовать подключенное приложение из моей основной организации для пользователя моей временной организации
Проблема: хотя у меня есть приложение в «Приложениях OAuth» от пользователя, созданного в чистой организации, доступ блокируется (ответ: недействительное разрешение), когда я использую учетные данные подключенного приложения и учетные данные моего нового пользователя.
Вариант 3. Не используйте подключенное приложение
Проблема: не существует простого способа автоматического получения токена безопасности для добавления его к паролю.
Конфигурация моего подключенного приложения в моей основной организации:
<isAdminApproved>true</isAdminApproved>
<isConsumerSecretOptional>false</isConsumerSecretOptional>
<isIntrospectAllTokens>false</isIntrospectAllTokens>
<isSecretRequiredForRefreshToken>false</isSecretRequiredForRefreshToken>
<oauthPolicy>
<ipRelaxation>BYPASS</ipRelaxation>
<refreshTokenPolicy>infinite</refreshTokenPolicy>
</oauthPolicy>
<permissionSetName>Synchronizer Access</permissionSetName>
<profileName>System Administrator</profileName>
Я настроил разрешение на доступ к моему приложению в моей основной организации, так как мне пришлось установить для isAdminApproved значение true, чтобы оно работало.
Кроме того, токен доступа возвращается после выполнения sf org create Scratch, однако я не могу использовать его для подключения к моей организации с нуля с помощью jsforce. Кажется, возвращенный токен не используется для этой цели.
Моя рабочая организация содержит следующую конфигурацию:
"features": ["EnableSetPasswordInApi", "API", "AuthorApex"],
"settings": {
"lightningExperienceSettings": {
"enableS1DesktopEnabled": true
},
"apexSettings": {
"enableCompileOnDeploy": true
},
"OauthOidcSettings": {
"blockOAuthUnPwFlow": false
}
}
Почему токен, возвращаемый «sfdxforce:org», работает, а токен access_token, возвращаемый «sf org create Scratch», — нет, что требует от нас запроса второго?
Решением было использовать access_token, возвращаемый sfdxforce:org:display, вместо того, который возвращал sf org create Scratch.