Prateek created OLTU-210:
----------------------------

             Summary: OAUTH_APPROVAL_ERROR_GENERIC : An unexpected error has 
occured during authentication. Please try again in salesforce integration ?
                 Key: OLTU-210
                 URL: https://issues.apache.org/jira/browse/OLTU-210
             Project: Apache Oltu
          Issue Type: Bug
            Reporter: Prateek


I am working on the Spring MVC + Apache Oltu  +Salesforce Integration Example. 
I got the ClientId and Client Secrete from the salesforce Connected App. Now I 
am not sure on the below error.

IMP: Why "authorizationCode" is comming null  from salesforce? What all scopes 
can be set like setScope("full,refresh_token")??

What API do we need to used like here we can used for GITHUB ?

{code:java}
GitHubTokenResponse oAuthResponse = oAuthClient.accessToken(request, 
GitHubTokenResponse.class);
{code}

What OAuthBearerClientRequest can be used like below ?


{code:java}
request= new 
OAuthBearerClientRequest("https://ap5.salesforce.com/5007F000000nxss";).
                                setAccessToken(oAuthResponse.getAccessToken()).
                                buildQueryMessage();
{code}


[OAUTH_APPROVAL_ERROR_GENERIC : An unexpected error has occured during 
authentication. Please try again.]

I am using the below code:-

{code:java}
private static final String AUTHORIZATION_URL = 
"https://login.salesforce.com/services/oauth2/authorize";;
        private static final String CLIENT_ID = 
"3MVG9d8..z.hDcPJZPIzGJ5UZDqJOJY.3R6RBM8sJAF8XXXXXXXXXXXXXXXXXXXXXX";
        private static final String CLIENT_SECRET = "375066XXXXX";
        private static final String REDIRECT_URL = 
"http://localhost:8080/apache-oltu/salesforce/redirect";;
        //private static final String ACCESS_TOKEN_URL = 
"https://login.salesforce.com/services/oauth2/token";;
        private static final String ACCESS_TOKEN_URL = 
"https://ap5.salesforce.com/services/oauth2/token";;

        @RequestMapping(value = "/auth", method = RequestMethod.GET)
        public String authenticate() throws OAuthSystemException {
                OAuthClientRequest request = OAuthClientRequest
                                .authorizationLocation(AUTHORIZATION_URL)
                                .setClientId(CLIENT_ID)
                                .setRedirectURI(REDIRECT_URL)
                                .setResponseType("code")
                                .setScope("full,refresh_token")
                                .buildQueryMessage();
                return "redirect:" + request.getLocationUri();
        }



        @RequestMapping(value = "/redirect", method = RequestMethod.GET)
        public HttpEntity<String> redirect(
                        @RequestParam(value = "token", required = false) String 
code) throws OAuthSystemException, OAuthProblemException {
                String value = "UNKNOWN";

                if (code != null && code.length() > 0) {
                        String details = getAccessToken(code);
                        value = details;
                }

                return new ResponseEntity<String>(value,HttpStatus.OK);
        }

        private String getAccessToken(String authorizationCode) throws 
OAuthSystemException, OAuthProblemException {
                OAuthClientRequest request = OAuthClientRequest
                                .tokenLocation(ACCESS_TOKEN_URL)
                                .setGrantType(GrantType.AUTHORIZATION_CODE)
                                .setClientId(CLIENT_ID)
                                .setClientSecret(CLIENT_SECRET)
                                .setRedirectURI(REDIRECT_URL)
                                .setCode(authorizationCode)
                                .buildBodyMessage();

                //create OAuth client that uses custom http client under the 
hood
                OAuthClient oAuthClient = new OAuthClient(new 
URLConnectionClient());

                GitHubTokenResponse oAuthResponse = 
oAuthClient.accessToken(request, GitHubTokenResponse.class);

                System.out.println(oAuthResponse.getBody());

                request= new 
OAuthBearerClientRequest("https://ap5.salesforce.com/5007F000000nxss";).
                                setAccessToken(oAuthResponse.getAccessToken()).
                                buildQueryMessage();


                OAuthClient client = new OAuthClient(new URLConnectionClient());
                OAuthResourceResponse resourceResponse= 
client.resource(request, "GET", OAuthResourceResponse.class);
{code}






--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to