Ранее задавали этот вопрос в Salesforce StackExchange, который они считали вне темы, поэтому прошу здесь посмотреть, могу ли я получить ответ.Использование немедленного = true в Salesforce OAuth flow
фон
Я пытаюсь использовать непосредственный параметр, чтобы проверить, если пользователь Salesforce уже одобрил доступ при переходе через веб-сервер OAuth поток, как документированные на OAuth 2.0 Web Server Authentication Flow. Мое рассуждение для этого состоит в том, что я не хочу, чтобы появлялись подсказки для входа или согласия, чтобы я мог отклонить доступ, если они еще не были одобрены.
Как только страница обратного вызова ударил, я всегда получать параметр error=immediate_unsuccessful
, даже если пользователь одобрил заявку до и вошел.
Я попытался проверить это с помощью настраиваемой Google OAuth 2 Playground и установка немедленного = true или немедленное = false до конца конечной точки авторизации. Вкл. = False, отображается приглашение согласия, после чего вы можете предоставить доступ. On = true, это возвращает ту же ошибку, что и ранее.
Установленное приложение Connected имеет api и refresh_token в качестве доступных областей, пользователи могут авторизоваться, и нет установленных ограничений на IP. Идентификатор клиента и секрет этого приложения затем передаются на площадку OAuth 2.
Ниже приведен краткий пример того, как мое надлежащее приложение перенаправляется на URL-адрес auth с помощью Java и клиентской библиотеки Google OAuth. Мы изначально авторизовать клиента без немедленного и затем позже вызвать тот же самый код с немедленным = истина (как показано в примере)
AuthorizationCodeFlow authorizationCodeFlow = new AuthorizationCodeFlow.Builder(BearerToken.authorizationHeaderAccessMethod(),
httpTransport,
GsonFactory.getDefaultInstance(),
new GenericUrl("https://login.salesforce.com/services/oauth2/token"),
new ClientParametersAuthentication(CLIENT_ID, CLIENT_SECRET),
CLIENT_ID,
"https://login.salesforce.com/services/oauth2/authorize")
.setCredentialDataStore(StoredCredential.getDefaultDataStore(MemoryDataStoreFactory.getDefaultInstance()))
.build();
AuthorizationCodeRequestUrl authUrl = authorizationCodeFlow.newAuthorizationUrl()
.setRedirectUri("https://72hrn138.ngrok.io/oauth/callback")
.setScopes(ImmutableSet.<String> of("api", "refresh_token"))
.set("prompt", "consent")
.set("immediate", "true");
response.redirect(authUrl);
вопрос (ы)
- Существуют ли какие-либо настройки, которые я, возможно, пропустил в Salesforce, который бы облегчил ошибку?
- Есть ли другой вариант в спецификации OAuth 2, который должен быть установлен для немедленной работы?
- Выполняется ли немедленная настройка?