Подключитесь к YouTube API с помощью токена сервера - PullRequest
2 голосов
/ 03 февраля 2020

Я успешно использую приведенный ниже код для подключения к API YouTube:

public static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
public static final JsonFactory JSON_FACTORY = new JacksonFactory();
private static final String CREDENTIALS_DIRECTORY = ".oauth-credentials";
public static Credential authorize(List<String> scopes, String credentialDatastore) throws IOException {

    InputStream in = GoogleSheetImpl.class.getResourceAsStream("/client_secret_json");

    GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
    FileDataStoreFactory fileDataStoreFactory = new FileDataStoreFactory(new File(System.getProperty("user.home") + "/" + CREDENTIALS_DIRECTORY));
    DataStore<StoredCredential> datastore = fileDataStoreFactory.getDataStore(credentialDatastore);

    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
            HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, scopes).setCredentialDataStore(datastore)
            .build();
    LocalServerReceiver localReceiver = new LocalServerReceiver.Builder().setPort(8080).build();
    return new AuthorizationCodeInstalledApp(flow, localReceiver).authorize("user");
}

private static YouTube youtube;

@Test
public void test() {

    List<String> scopes = Lists.newArrayList("https://www.googleapis.com/auth/youtube.force-ssl");

    try {
        Credential credential = authorize(scopes, "commentthreads");

        youtube = new YouTube.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
                .setApplicationName("youtube-cmdline-playlistupdates-sample")
                .build();

        process();

    } catch (GoogleJsonResponseException e) {
        System.err.println("Throwable: " + t.getMessage());
        t.printStackTrace();
    }
}

Но, как вы можете видеть, он использует OAuth для аутентификации, которая открывает веб-страницу и просит меня войти в мою учетную запись Google.

Есть ли какой-нибудь способ использовать токен Сервер-Сервер? Для токена мне не нужно загружать веб-страницу для аутентификации. Есть ли учебник, как правильно настроить фабрику соединений?

1 Ответ

1 голос
/ 03 февраля 2020

Не все учетные записи службы поддержки Google apis. API YouTube - это один из API, который не поддерживает аутентификацию учетной записи службы.

Вам нужно будет использовать Oauth2 для аутентификации пользователя, затем сохранить токен refre sh, который затем можно использовать, чтобы запросить токен refre sh для запроса нового токена доступа.

...