2016-06-17 3 views
0

Я пользуюсь учетной записью службы Google, чтобы получить доступ к токену со стороны сервиса, используя приведенный ниже код. Но я получаю токен доступа как Null. Тот же возвращенный токен будет использоваться, чтобы открыть сборщик файлов Google на стороне клиента для того же userEmailId. Пожалуйста, предложите, что я делаю неправильно в своем коде.Получение токена доступа как Null в учетной записи службы Google

private static final List SCOPE = Arrays.asList("https://www.googleapis.com/auth/drive"); 

public String getAccessToken(String SERVICE_ACCOUNT_EMAIL, String SERVICE_ACCOUNT_PKCS12_FILE_PATH,String userEmailId){ 
       try { 
        HttpTransport httpTransport = new NetHttpTransport(); 
        JsonFactory jsonFactory = new JacksonFactory(); 
        GoogleCredential credential = new GoogleCredential.Builder() 
                .setTransport(httpTransport) 
                .setJsonFactory(jsonFactory) 
                .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) 
                .setServiceAccountScopes(SCOPE) 
                .setServiceAccountUser(userEmailId) 
                .setServiceAccountPrivateKeyFromP12File(new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH)) 
                .build(); 

        credential.getRefreshToken(); 
        return credential.getAccessToken(); 
       } catch (Exception e) { 
        // TODO: handle exception 
        log.severe("Error while getting Drive credentilas. 5.0"+ e.getMessage()); 
        return null; 
       } 
      }
+0

Не уверен, что именно то, что случилось здесь, но я настоятельно рекомендую использовать https://developers.google.com/identity/protocols/application-default-credentials в любом случае. Если это не удается, попробуйте указать проблему в cliet lib. https://github.com/google/google-api-java-client –

+0

@BillPrin: Спасибо за ваш комментарий, на самом деле я также использую делегацию домена, но получаю токен доступа как Null с указанным выше кодом, выдавая себя за пользователя с сервера боковая сторона. –

ответ

0

У меня была аналогичная проблема. Ответ, кажется, просто изменить от credential.getRefreshToken() просто credential.refreshToken()

Это должно решить проблему

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