Я пользуюсь учетной записью службы 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;
}
}
Не уверен, что именно то, что случилось здесь, но я настоятельно рекомендую использовать https://developers.google.com/identity/protocols/application-default-credentials в любом случае. Если это не удается, попробуйте указать проблему в cliet lib. https://github.com/google/google-api-java-client –
@BillPrin: Спасибо за ваш комментарий, на самом деле я также использую делегацию домена, но получаю токен доступа как Null с указанным выше кодом, выдавая себя за пользователя с сервера боковая сторона. –