2016-03-30 3 views
0

Я пытаюсь внедрить вход Google для серверного приложения. в приложении моего приложения. Я использую Eclipse, Luna и я следовал учебник по этой ссылке: https://developers.google.com/identity/sign-in/web/server-side-flow#step_7_exchange_the_authorization_code_for_an_access_tokenТип com.google.api.client.json.JsonFactory не может быть разрешен

я добавил следующие jarfiles на моем пути сборки: google-api-client-jackson2-1.16.0-rc.jar, appengine-gcs-client-0.5.jar, и google-api-client-1.8.0-beta.jar, который я скачал с Maven репо.

У меня есть ошибка, и я не знаю, что еще нужно сделать, чтобы ее разрешить. Я пометил это в своем коде с двойными звездочками.

Сообщение об ошибке: The type com.google.api.client.json.JsonFactory cannot be resolved. It is indirectly referenced from required .class files.
Я искал аналогичные проблемы в StackOverflow, но ответа не нашел.

Пожалуйста, может кто-нибудь пожалеть меня и помочь мне! Эта функция задерживает мое развертывание. Заранее спасибо.

@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    // Set path to the Web application client_secret_*.json file you downloaded from the 
    // Google Developers Console: https://console.developers.google.com/apis/credentials?project=_ 
    // You can also find your Web application client ID and client secret from the 
    // console and specify them directly when you create the GoogleAuthorizationCodeTokenRequest 
    // object. 
    ServletContext context = getServletContext(); 
    String CLIENT_SECRET_FILE = context.getRealPath("/WEB-INF/client/client_secret.json");  

    // Exchange auth code for access token 
    GoogleClientSecrets clientSecrets = 
     **GoogleClientSecrets.load(
      JacksonFactory.getDefaultInstance(), new FileReader(CLIENT_SECRET_FILE));** 
    GoogleTokenResponse tokenResponse = 
       new GoogleAuthorizationCodeTokenRequest(
        new NetHttpTransport(), 
        JacksonFactory.getDefaultInstance(), 
        "https://www.googleapis.com/oauth2/v4/token", 
        clientSecrets.getDetails().getClientId(), 
        clientSecrets.getDetails().getClientSecret(), 
        authCode, 
        REDIRECT_URI) // Specify the same redirect URI that you use with your web 
           // app. If you don't have a web version of your app, you can 
           // specify an empty string. 
        .execute(); 

    String accessToken = tokenResponse.getAccessToken(); 

    // Use access token to call API 
    GoogleCredential credential = new GoogleCredential().setAccessToken(accessToken); 
    Drive drive = 
     new Drive.Builder(new NetHttpTransport(), JacksonFactory.getDefaultInstance(), credential) 
      .setApplicationName("Auth Code Exchange Demo") 
      .build(); 
    File file = drive.files().get("appfolder").execute(); 

    // Get profile info from ID token 
    GoogleIdToken idToken = tokenResponse.parseIdToken(); 
    GoogleIdToken.Payload payload = idToken.getPayload(); 
    String userId = payload.getSubject(); // Use this value as a key to identify a user. 
    String email = payload.getEmail(); 
    boolean emailVerified = Boolean.valueOf(payload.getEmailVerified()); 
    String name = (String) payload.get("name"); 
    String pictureUrl = (String) payload.get("picture"); 
    String locale = (String) payload.get("locale"); 
    String familyName = (String) payload.get("family_name"); 
    String givenName = (String) payload.get("given_name");  

} 
+0

Google Library HTTP Client отсутствует? – jarmod

+0

Да, я только что добавил его (google-http-client-jackson2-1.21.0.jar) в путь сборки, я загружу с maven. – NOBLES

ответ

0

Я предполагаю, что у вас есть скачать denpendencies но вам не использовать Maven, я думаю, что проблема заключается в том, что Maven решает автоматически косвенную зависимость, но вы haven't их решить.

Если вы хотите использовать jsonFactory для google, вам нужна http-клиентская библиотека.

Вы можете скачать его здесь:

http://repo2.maven.org/maven2/com/google/http-client/google-http-client-jackson/

Смежные вопросы