damingzi
damingzi

Reputation: 716

Missing credentials while calling YouTube insert API

I want to use API key instead of OAuth token to call insert API from YouTube v3 lib. Code snippet is like below:

await google
.youtube("v3")
.videos.insert({
    key: "my-youtube-api-key",
    part: "id,snippet,status",
    notifySubscribers: false,
    requestBody: {
    snippet: {
        title: "Test video title",
        description: "Test video description",
    },
    status: {
        privacyStatus: "public",
    },
    },
    media: {
    body: fs.createReadStream(filePath),
    },
})
.catch((err) => {
    console.log("Upload to YouTube failed", err);
    return null;
});

However, I am hitting error code 401, message is:

  code: 401,
  errors: [
    {
      message: 'Login Required.',
      domain: 'global',
      reason: 'required',
      location: 'Authorization',
      debugInfo: 'Authentication error: missing credentials.',
      locationType: 'header'
    }
  ]

How can I fix this issue? Isn't API key not supported? Thanks!

Upvotes: 0

Views: 287

Answers (1)

stvar
stvar

Reputation: 6975

As per the docs, it's insufficient to use an API key on Videos.insert endpoint; you'll have to be properly authorized to call this endpoint:

Authorization

This request requires authorization with at least one of the following scopes (read more about authentication and authorization).

Scope

https://www.googleapis.com/auth/youtube.upload
https://www.googleapis.com/auth/youtube
https://www.googleapis.com/auth/youtubepartner
https://www.googleapis.com/auth/youtube.force-ssl

Upvotes: 2

Related Questions