可能有点晚了……
1) 在Google Developers Console 中创建新项目。
2) 创建 oauth 2.0 客户 ID。在应用程序类型中选择 - 其他。
3) 下载 json 文件,将其重命名为“client_secret.json”并将其添加到 /resources 文件夹(用于 Gradle 项目)。
4) 创建java文件并添加以下代码:
public class YoutubeAuth {
private static final String CLIENT_SECRETS= "/client_secret.json";
private static final Collection<String> SCOPES =
Arrays.asList("https://www.googleapis.com/auth/youtube.readonly");
private static FileDataStoreFactory dataStoreFactory;
private static final java.io.File DATA_STORE_DIR =
new java.io.File(System.getProperty("user.home"), ".store/youtube");
private static final String APPLICATION_NAME = "Custom Application Name";
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
/**
* Create an authorized Credential object.
*
* @return an authorized Credential object.
* @throws IOException
*/
private static Credential authorize(final NetHttpTransport httpTransport) throws IOException {
// Load client secrets.
InputStream in = YoutubeAuth.class.getResourceAsStream(CLIENT_SECRETS);
GoogleClientSecrets clientSecrets =
GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
// Build flow and trigger user authorization request.
GoogleAuthorizationCodeFlow flow =
new GoogleAuthorizationCodeFlow.Builder(httpTransport, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(dataStoreFactory)
.build();
return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
}
/**
* Build and return an authorized API client service.
*
* @return an authorized API client service
* @throws GeneralSecurityException, IOException
*/
public static YouTube getService() throws GeneralSecurityException, IOException {
final NetHttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
Credential credential = authorize(httpTransport);
return new YouTube.Builder(httpTransport, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME)
.build();
}
}
注意这行代码:
private static FileDataStoreFactory dataStoreFactory;
private static final java.io.File DATA_STORE_DIR = new java.io.File(System.getProperty("user.home"),".store/youtube");
到这个方法里面的 authorize() 方法:
.setDataStoreFactory(dataStoreFactory)
在 getService() 方法中的这个方法:
dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
YouTube youtubeService = LfkYoutubeAuth.getService();
...
// some other code
---
所以你可以像这样使用 Youtube 服务