YouTube Scope

Scope

The YouTube API defines a few scopes. Each scope will define the permissions your app will have to the account of the authenticated user.

Skybrud.Social Name Description
YouTubeScopes.Manage https://www.googleapis.com/auth/youtube Manage your YouTube account.
YouTubeScopes.Readonly https://www.googleapis.com/auth/youtube.readonly View your YouTube account.
YouTubeScopes.Upload https://www.googleapis.com/auth/youtube.upload Upload YouTube videos and manage your YouTube videos.
YouTubeScopes.PartnerChannelAudit https://www.googleapis.com/auth/youtubepartner-channel-audit Retrieve the auditDetails part in a channel resource.

In addition to the scopes listed above, Google also also has few global scopes.

Working with scopes in code

Scopes for the YouTube API are implemented by the YouTubeScope class, which again inherits from GoogleScope. A list of known scopes are available through either the YouTubeScopes or GoogleScopes classes.

When setting up the code for an authentication page, you must specify the scopes through an instance of GoogleScopeCollection. There are a couple of different ways to create an instance of this calls, so see the snippet below for examples:

// We can initialize a new collection based on one or more scopes
GoogleScopeCollection scopes1 = new GoogleScopeCollection(GoogleScopes.Email, GoogleScopes.Profile);

// We can also initialize a new empty collection, and then add scopes manually
GoogleScopeCollection scopes2 = new GoogleScopeCollection();

// Add scopes one by one
scopes2.Add(GoogleScopes.Email);
scopes2.Add(GoogleScopes.Profile);
scopes2.Add(YouTubeScopes.Readonly);

// Remove the "email" scope if contained in the collection
if (scopes2.Contains(GoogleScopes.Email)) {
    scopes2.Remove(GoogleScopes.Email);
}

// Or just remove a scope without checking first
scopes2.Remove(GoogleScopes.OpenId);

// With help of operator overloading, initialize a new collection from a single scope
GoogleScopeCollection scopes3 = GoogleScopes.Profile;

// Also with help of operator overloading, two scopes added together results in a new collection
GoogleScopeCollection scopes4 = GoogleScopes.Profile + YouTubeScopes.Readonly;

References