Ввод моего приложения - URL-адрес Google Sheet, он может получить учетные данные и прочитать содержимое листа.Когда мое приложение использует Oauth2.0 для получения авторизации от пользователей, я использую пример кода из Google Document ниже.Что касается каждого пользователя, я хочу сохранить уникальные учетные данные, чтобы при запросе одного пользователя несколько раз к моему приложению, поэтому мне не приходилось каждый раз создавать и сохранять новые учетные данные (на самом деле эта часть реализована в AuthorizationCodeInstalledApp (поток, получатель).) .authorize («пользователь»), он создаст новые учетные данные, когда у «пользователя» их нет).В примере кода, я думаю, что он не учитывает ситуацию, когда несколько пользователей отправляют запросы в мое приложение, «пользователь» не может быть идентификатором пользователя для нескольких пользователей, поэтому «пользователь» должен настраиваться для каждого пользователя, что означает, чтоне может быть постоянным.Поскольку учетные данные хранятся локально, если один и тот же пользователь запрашивает несколько раз за короткое время, пользователю не нужно перенаправляться на страницу входа в Google, чтобы предоставить авторизацию моему приложению.Мой вопрос заключается в том, что я могу сделать, чтобы дать каждому отдельному пользователю уникальный идентификатор пользователя, когда несколько пользователей вызывают мою конечную точку, возможно, что каждый пользователь может ввести несколько URL за короткий промежуток времени.
У меня есть идея, что, если у Google API есть метод, он может получить уникальную информацию пользователя, прежде чем получить учетные данные, такие как имя пользователя userID.
private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException {
// Load client secrets.
InputStream in = KirbyGsheet.class.getResourceAsStream(CREDENTIALS_FILE_PATH);
if (in == null) {
throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);
}
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH)))
.setAccessType("offline")
.build();
LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(9998).build();
return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
}