AuthorizationCodeInstalledApp.authorize ("пользователь"). Как получить уникальный идентификатор пользователя для каждого пользователя? - PullRequest
0 голосов
/ 19 июня 2019

Ввод моего приложения - 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");
}

1 Ответ

0 голосов
/ 20 июня 2019

Я решаю эту проблему, извлекая информацию о пользователе из внешнего интерфейса для создания уникального идентификатора, затем отправляю этот идентификатор и URL-адрес бэкэнду

...