以前在Salesforce StackExchange中问过这个问题,他们认为这是题外话,所以在这里问我是否可以得到答案。在Salesforce OAuth流程中使用immediate = true
背景
我试图用眼前的参数来检查,如果通过Web服务器的OAuth流作为在案OAuth 2.0 Web Server Authentication Flow去当Salesforce用户已经批准访问。我的推理是,我不希望登录或同意提示出现,因此如果他们尚未获得批准,我可以拒绝访问。
一旦回调页面被击中,我总是接收参数error=immediate_unsuccessful
即使用户已经批准之前,申请并已登录。
我试图通过检查这个定制Google OAuth 2 Playground并设置立即= true或immediate = false到授权端点的末尾。 On = false时,显示同意提示,然后您可以授予访问权限。 On = true,这将返回与前面列出的相同的错误。
已设置的已连接应用程序具有api和refresh_token作为可用范围,用户可以自行授权并且没有设置ip限制。然后将此应用的客户端ID和密码传递到OAuth 2 Playground。
下面是关于我的正确应用程序如何使用Java和Google OAuth客户端库重定向到身份验证URL的简要示例。我们最初授权客户没有立即再后来就调用相同的代码,即日=真(例如所示)
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);
问题(S)
- 是否存在,我可能有任何设置在Salesforce错过了会减轻错误?
- OAuth 2规范中是否有任何其他选项必须设置为即时选项才能工作?
- 立即设置工作?