엄민용

Youtube API Sample for Project

1 +const { google } = require("googleapis");
2 +var http = require('http');
3 +var opn = require('opn');
4 +var destroyer = require('destroyer');
5 +var url = require('url');
6 +var enableDestroy = require('server-destroy');
7 +const oauth2Client = new google.auth.OAuth2(
8 + "394965702516-q817fn2gj8r8sqoudhp29k1rd71ku42j.apps.googleusercontent.com",
9 + "xgo5tcTwsmg2alNumeY1Drj_",
10 + "http://localhost:3031/api/oauth2callback"
11 +);
12 +
13 +const scopes = [
14 + 'https://www.googleapis.com/auth/youtube',
15 + 'https://www.googleapis.com/auth/youtube.force-ssl',
16 + 'https://www.googleapis.com/auth/youtube.readonly',
17 + 'https://www.googleapis.com/auth/youtubepartner'
18 +];
19 +
20 +let refreshToken = '';
21 +
22 +async function authenticate() {
23 +
24 + return new Promise((resolve, reject) => {
25 +
26 + if (refreshToken !== "") {
27 + oauth2Client.setCredentials({
28 + refresh_token: refreshToken
29 + });
30 +
31 + oauth2Client.getAccessToken((err, ttoken) => {
32 + if (err) {
33 + reject(e);
34 + }
35 + resolve(oauth2Client);
36 + });
37 + } else {
38 + const authorizeUrl = oauth2Client.generateAuthUrl({
39 + access_type: 'offline',
40 + scope: scopes.join(' '),
41 + });
42 + const server = http.createServer(async (req, res) => {
43 + try {
44 + if (req.url.indexOf('/api/oauth2callback') > -1) {
45 + const qs = new url.URL(req.url, 'http://localhost:3031').searchParams;
46 + res.end('Completed');
47 + enableDestroy(server);
48 + server.destroy();
49 +
50 + const {
51 + tokens
52 + } = await oauth2Client.getToken(qs.get('code'));
53 +
54 + refreshToken = tokens.refresh_token;
55 + oauth2Client.credentials = tokens;
56 +
57 + resolve(oauth2Client);
58 + }
59 + } catch (e) {
60 + reject(e);
61 + }
62 + }).listen(3031, () => {
63 +
64 + opn(authorizeUrl, {
65 + wait: false
66 + }).then(cp => cp.unref());
67 + });
68 +
69 + destroyer(server);
70 + }
71 + });
72 +}
73 +
74 +module.exports.refreshClient=authenticate;
...\ No newline at end of file ...\ No newline at end of file
1 +var {google} =require('googleapis');
2 +var service = google.youtube('v3');
3 +const oauth2Service = require('./oauth2');
4 +
5 +function getPlaylistData(oauth2Client, channelId) {
6 + service.playlists.list({
7 + auth: oauth2Client,
8 + part: 'id, snippet',
9 + fields: 'items(id, snippet(title, description, thumbnails(default(url))))',
10 + channelId: channelId
11 + }, function(err, response) {
12 + if(err) {
13 + console.log('The API returned an error: ' + err);
14 + return;
15 + }
16 + var channels = response.data.items;
17 + if (channels.length == 0){
18 + console.log('No channel found.')
19 + } else {
20 + console.log(JSON.stringify(channels, null, 4));
21 + }
22 + });
23 +}
24 +
25 +oauth2Service.refreshClient()
26 + .then((client) => {
27 + getPlaylistData(client, 'UCx6jsZ02B4K3SECUrkgPyzg');
28 + })
29 + .catch(console.error);
...\ No newline at end of file ...\ No newline at end of file