Я работаю над взаимодействием между серверами с API Google DialogFlow от имени учетной записи службы с помощью Google OAuth2.Но я получаю сообщение об ошибке при попытке сгенерировать токен доступа (credentials.refreshIfExpired ()):
java.io.IOException: Error getting access token for service account: connect timed out
здесь коды:
GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream(System.getenv("GOOGLE_APPLICATION_CREDENTIALS")));
if (credentials.createScopedRequired()) {
credentials = credentials.createScoped(Collections.singletonList("https://www.googleapis.com/auth/dialogflow"));
}
credentials.refreshIfExpired();
AccessToken token = credentials.getAccessToken();
System.out.println(token.getTokenValue());
Я пытался найти решение разными способами, и кто-то сказал, что это может вызвать синхронизацию между временем моего сервера и временем Google.
Тогда яустановить часовой пояс по умолчанию в GMT
@SpringBootApplication
public class DialogFlowDemoApplication {
@PostConstruct
public void init(){
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
System.out.println("Spring boot application running in GMT timezone :"+new Date());
}
public static void main(String[] args) {
SpringApplication.run(DialogFlowDemoApplication.class, args);
}
}
Но это не помогает, это действительно сводит меня с ума.
мои зависимостиследующим образом:
<!--start google dependencies-->
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-dialogflow</artifactId>
<version>0.108.0-alpha</version>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client</artifactId>
<version>1.30.1</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
<version>1.90.0</version>
</dependency>
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.30.4</version>
</dependency>
<!--end of google dependencies-->
Пожалуйста, помогите, спасибо!