2014-10-13 2 views
0

아래 그림과 같이 저지 클라이언트를 사용하여 토큰으로 Google oauth를 호출합니다.저지 클라이언트를 사용하여 Google oauth에 전화하기

ClientConfig config = new DefaultClientConfig(); 
Client client = Client.create(config); 
WebResource webResource = client.resource(UriBuilder.fromUri("https://accounts.google.com/o/oauth2/token").build()); 
MultivaluedMap formData = new MultivaluedMapImpl(); 
formData.add("code", request.getParameter("code")); 
formData.add("client_id", Global.GOOGLE_CLIENT_ID); 
formData.add("redirect_uri", Global.GOOGLE_REDIRECT_URL); 
formData.add("client_secret", Global.GOOGLE_SECRET); 
formData.add("grant_type", "authorization_code"); 
ClientResponse response1 = webResource.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).post(ClientResponse.class, formData); 
System.out.println(response1.getEntity(String.class)); 
System.out.println(response1.getClass().getName()); 

응답 내가 할

{ "access_token이" "ya29.nQCXFIhTs8s-SQKON6NjPv7wkBcJxlasdlkjsdsklsGuzMMqyDz3XpkNLT",
"token_type": "무기명", "expires_in"3599, "id_token" "eyJhbGciOiJSUzI1NiIsImtpZCI6IjdkZGQwOGEwM2IyNWQwZjVhMDllMjNiMmJlMTBkZDIyODQyYTg1NjkifQ.eyJpc3MiOiJhY2NvdW50csdlksjdsdkljdslkjdsdslkjdjsdkljjsldkjsdj987230iOiJwcmVtMXByZUBnbWFpbC5jb20iLCJhdF9oYXNoIjoiMmt2RlZ1RUpTMGp4UWlIUDgtckVuZyIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdWQiOiI1OTQ5NTUyODE4ODYtYnFyMGRibWRyYWJxYW9ubWhlaXFrMH NrZGRmNWFsazUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJpYXQiOjE0MTMyMTQ4ODIsImV4cCI6MTQxMzIxODc4Mn0.pc2Snmb4pRF_TqylBuEpz0oBoWZsIq-_r_sqLS06E6DJKgSawWCg_3vqtI72GvWno0J8UghZka6rpaoAFo5RZlxNxLDs4GV5rZqdodNgbKjEO-5MrpGZWUOM7SNoYooASesmTtbamDoCf6G74MSKW5XKaVwdvFEUsSBz5NuavNU은 "}

어떻게 응답에서 id_token을 얻을 응답에 실제 값을 얻을 수 있습니다.

답변

1

지금까지 구현 한 것 중 가장 간단한 해결책은 JSONSerializer를 사용하여 문자열 응답의 JSONObject 표현을 가져 오는 것입니다. 코드는 이것과 유사하게 보일 수있다 직접 JSON에 대한 걱정없이 https://code.google.com/p/google-api-java-client/wiki/OAuth2

다시 얻을 GoogleResponseToken을 GoogleAuthorizationCodeTokenRequest 클래스를 사용하여 다음을 수행 할 수 있습니다

JSONObject jsonOutput = (JSONObject) JSONSerializer.toJSON(response.getEntity(String.class)); 
String access_token = jsonOutput.getString("access_token"); 
String id_token = jsonOutput.getString("id_token"); 

내가 전화를 만들기위한 구글의 자바 클라이언트를 사용하지만 추천 할 것입니다 . 예제는 여기에 있습니다 :이 (링크에서 직접 촬영)로 http://javadoc.google-api-java-client.googlecode.com/hg/1.18.0-rc/com/google/api/client/googleapis/auth/oauth2/GoogleAuthorizationCodeTokenRequest.html

코드는 간단하다 :

GoogleTokenResponse response = 
     new GoogleAuthorizationCodeTokenRequest(new NetHttpTransport(), new JacksonFactory(), 
      "812741506391.apps.googleusercontent.com", "{client_secret}", 
      "4/P7q7W91a-oMsCeLvIaQm6bTrgtp7", "https://oauth2-login-demo.appspot.com/code") 
      .execute(); 
    System.out.println("Access token: " + response.getAccessToken()); 
    System.out.println("Id token: " + response.getIdToken()); 
관련 문제