Quantcast
Channel: Active questions tagged youtube-api - Stack Overflow
Viewing all articles
Browse latest Browse all 3831

GaxiosError: Login Required. when I deall with commentThreads.insert function using Youtube_api and Node.js quickstart.js

$
0
0

I've modified quickstart.js file provided by youtube api(node.js version), and I have done my Api_key and credential.josn file, so I successfully run the function of getChannel() and getVideos(), however, when I run the function insertComment, I've got this erroe from the console:

Error inserting comment: GaxiosError: Login Required.at Gaxios._request (/Users/chi/node_modules/gaxios/build/src/gaxios.js:136:23)

I want to successfully sent the comment to the video by using the api function

enter image description hereenter image description here

codes shown below is my modified quickstart.js file:

var fs = require("fs");var readline = require("readline");var { google } = require("googleapis");var OAuth2 = google.auth.OAuth2;// If modifying these scopes, delete your previously saved credentials// at ~/.credentials/youtube-nodejs-quickstart.jsonvar SCOPES = ["https://www.googleapis.com/auth/youtube.readonly","https://www.googleapis.com/auth/youtube.force-ssl","https://www.googleapis.com/auth/youtube","https://www.googleapis.com/auth/youtubepartner",];var TOKEN_DIR =  (process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE) +"/.credentials/";var TOKEN_PATH = TOKEN_DIR +"youtube-nodejs-quickstart.json";// Load client secrets from a local file.fs.readFile("client_secret.json", function processClientSecrets(err, content) {  if (err) {    console.log("Error loading client secret file: " + err);    return;  }  // Authorize a client with the loaded credentials, then call the YouTube API.  authorize(JSON.parse(content), insertComment);});/** * Create an OAuth2 client with the given credentials, and then execute the * given callback function. * * @param {Object} credentials The authorization client credentials. * @param {function} callback The callback to call with the authorized client. */function authorize(credentials, callback) {  var clientSecret = credentials.installed.client_secret;  var clientId = credentials.installed.client_id;  var redirectUrl = credentials.installed.redirect_uris[0];  var oauth2Client = new OAuth2(clientId, clientSecret, redirectUrl);  // Check if we have previously stored a token.  fs.readFile(TOKEN_PATH, function (err, token) {    if (err) {      getNewToken(oauth2Client, callback);    } else {      oauth2Client.credentials = JSON.parse(token);      callback(oauth2Client);    }  });}/** * Get and store new token after prompting for user authorization, and then * execute the given callback with the authorized OAuth2 client. * * @param {google.auth.OAuth2} oauth2Client The OAuth2 client to get token for. * @param {getEventsCallback} callback The callback to call with the authorized *     client. */function getNewToken(oauth2Client, callback) {  var authUrl = oauth2Client.generateAuthUrl({    access_type: "offline",    scope: SCOPES,  });  console.log("Authorize this app by visiting this url: ", authUrl);  var rl = readline.createInterface({    input: process.stdin,    output: process.stdout,  });  rl.question("Enter the code from that page here: ", function (code) {    rl.close();    oauth2Client.getToken(code, function (err, token) {      if (err) {        console.log("Error while trying to retrieve access token", err);        return;      }      oauth2Client.credentials = token;      storeToken(token);      callback(oauth2Client);    });  });}/** * Store token to disk be used in later program executions. * * @param {Object} token The token to store to disk. */function storeToken(token) {  try {    fs.mkdirSync(TOKEN_DIR);  } catch (err) {    if (err.code != "EEXIST") {      throw err;    }  }  fs.writeFile(TOKEN_PATH, JSON.stringify(token), (err) => {    if (err) throw err;    console.log("Token stored to " + TOKEN_PATH);  });}/** * Lists the names and IDs of up to 10 files. * * @param {google.auth.OAuth2} auth An authorized OAuth2 client. */function getChannel(auth) {  var service = google.youtube("v3");  service.videos.list(    {      auth: auth,      part: "snippet,contentDetails,statistics",      id: "UC_x5XG1OV2P6uZZ5FSM9Ttw",    },    function (err, response) {      if (err) {        console.log("The API returned an error: " + err);        return;      }      var videos = response.data.items;      if (videos.length == 0) {        console.log("No channel found.");      } else {        console.log("This channel's ID is %s. Its title is '%s', and " +"it has %s views.",          videos[0].id,          videos[0].snippet.title,          videos[0].statistics.viewCount        );      }    }  );}function getVideoos(auth) {  var service = google.youtube("v3");  service.search.list(    {      auth: auth,      part: "snippet",      q: "green day",    },    function (err, response) {      if (err) {        console.log("The API returned an error: " + err);        return;      }      var videos = response.data.items;      if (videos.length == 0) {        console.log("No videos found.");      } else {        console.log(videos);      }    }  );}function insertComment(auth) {  var service = google.youtube("v3");  const commentParams = {    part: "snippet",    body: {      snippet: {        videoId: "EGcF7lyqN8Q", // its an hard-coding id of a video which permits commenting        topLevelComment: {          snippet: {            textOriginal: "speechless...", // this is what I want to comment          },        },      },    },  };  service.commentThreads.insert(commentParams, (err, response) => {    if (err) {      console.error("Error inserting comment:", err);      return;    }    console.log("Comment inserted successfully:", response.data);  });}

Viewing all articles
Browse latest Browse all 3831

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>