In this article I will explain how to display (view) list of files from Google Drive using Google Drive API in ASP.Net with C# and VB.Net and the ASPSnippets.GoogleAPI.
The files will be displayed along with the Thumbnail image and link to download the file.
 
Note: In my previous article, I have already explained how to upload files to Google Drive using C# and VB.Net. Upload Files to Google Drive using Google Drive API in ASP.Net with C# and VB.Net
 
 
 
Getting Google Client ID and Client Secret
 
In order to use Google Drive API for uploading files to Google Drive, you will need to create an Application in Google Console and get Client ID and Client Secret. For details please refer the following article.
 
 
 
Downloading ASPSnippets.GoogleAPI DLL
 
You can download the ASPSnippets.GoogleAPI API DLL using the following download link.
 
 
 
HTML Markup
 
The HTML Markup consist of an ASP.Net DataList control. The ItemTemplate of the DataList control consists of an HTML Table containing some Label controls and an Image control for displaying the details of the uploaded file and the Thumbnail image.
 
<asp:DataList ID="dlFiles" runat="server" RepeatColumns="2">
<ItemTemplate>
    <table border="0" cellpadding="0" cellspacing="0" class="table">
        <tr>
            <th colspan="2">
                <%# Eval("Title") %>
            </th>
        </tr>
        <tr>
            <td rowspan="6" style="width: 100px" valign="top">
                <a href='<%# Eval("ThumbnailLink") %>' target="_blank">
                    <img alt="" src='<%# Eval("ThumbnailLink") %>' class="thumbnail" />
                </a>
            </td>
            <tr>
                <td style="width: 200px">
                    <b>File Name:</b>
                    <%# Eval("OriginalFileName") %>
                </td>
            </tr>
            <tr>
                <td>
                    <b>Created Date:</b>
                    <%# Convert.ToDateTime(Eval("CreatedDate")).ToString("dd, MMM yyyy") %>
                </td>
            </tr>
            <tr>
                <td>
                    <b>Modified Date:</b>
                    <%# Convert.ToDateTime(Eval("ModifiedDate")).ToString("dd, MMM yyyy") %>
                </td>
            </tr>
            <tr>
                <td>
                    <b>File Type:</b>
                    <img alt="" src='<%# Eval("IconLink") %>' />
                </td>
            </tr>
            <tr>
                <td>
                    <a href='<%# Eval("WebContentLink") %>'>Download File</a>
                </td>
            </tr>
        </tr>
    </table>
</ItemTemplate>
</asp:DataList>
 
 
 
Namespaces
 
You will need to import the following namespaces.
Note: You will need place the ASPSnippets.GoogleAPI DLL inside the BIN folder of your project and add its reference.
 
C#
using ASPSnippets.GoogleAPI;
using System.Web.Script.Serialization;
 
VB.Net
Imports ASPSnippets.GoogleAPI
Imports System.Web.Script.Serialization
 
 
Data Class
 
You will need to create the following class which will be used to hold the Google Drive file details returned from Google API.
The structure of this class is same as that of the JSON string returned from the Google API so that the JSON string can be easily deserialized to its object.
C#
public class GoogleDriveFiles
{
    public List<GoogleDriveFile> Items { get; set; }
}
 
public class GoogleDriveFile
{
    public string Id { get; set; }
    public string Title { get; set; }
    public string OriginalFilename { get; set; }
    public string ThumbnailLink { get; set; }
    public string IconLink { get; set; }
    public string WebContentLink { get; set; }
    public DateTime CreatedDate { get; set; }
    public DateTime ModifiedDate { get; set; }
    public GoogleDriveFileLabel Labels { get; set; }
}
 
public class GoogleDriveFileLabel
{
    public bool Starred { get; set; }
    public bool Hidden { get; set; }
    public bool Trashed { get; set; }
    public bool Restricted { get; set; }
    public bool Viewed { get; set; }
}
 
VB.Net
Public Class GoogleDriveFiles
    Public Property Items() As List(Of GoogleDriveFile)
        Get
            Return m_Items
        End Get
        Set(value As List(Of GoogleDriveFile))
            m_Items = Value
        End Set
    End Property
    Private m_Items As List(Of GoogleDriveFile)
End Class
 
Public Class GoogleDriveFile
    Public Property Id() As String
        Get
            Return m_Id
        End Get
        Set(value As String)
            m_Id = Value
        End Set
    End Property
    Private m_Id As String
    Public Property Title() As String
        Get
            Return m_Title
        End Get
        Set(value As String)
            m_Title = Value
        End Set
    End Property
    Private m_Title As String
    Public Property OriginalFilename() As String
        Get
            Return m_OriginalFilename
        End Get
        Set(value As String)
            m_OriginalFilename = Value
        End Set
    End Property
    Private m_OriginalFilename As String
    Public Property ThumbnailLink() As String
        Get
            Return m_ThumbnailLink
        End Get
        Set(value As String)
            m_ThumbnailLink = Value
        End Set
    End Property
    Private m_ThumbnailLink As String
    Public Property IconLink() As String
        Get
            Return m_IconLink
        End Get
        Set(value As String)
            m_IconLink = Value
        End Set
    End Property
    Private m_IconLink As String
    Public Property WebContentLink() As String
        Get
            Return m_WebContentLink
        End Get
        Set(value As String)
            m_WebContentLink = Value
        End Set
    End Property
    Private m_WebContentLink As String
    Public Property CreatedDate() As DateTime
        Get
            Return m_CreatedDate
        End Get
        Set(value As DateTime)
            m_CreatedDate = Value
        End Set
    End Property
    Private m_CreatedDate As DateTime
    Public Property ModifiedDate() As DateTime
        Get
            Return m_ModifiedDate
        End Get
        Set(value As DateTime)
            m_ModifiedDate = Value
        End Set
    End Property
    Private m_ModifiedDate As DateTime
    Public Property Labels() As GoogleDriveFileLabel
        Get
            Return m_Labels
        End Get
        Set(value As GoogleDriveFileLabel)
            m_Labels = Value
        End Set
    End Property
    Private m_Labels As GoogleDriveFileLabel
End Class
 
Public Class GoogleDriveFileLabel
    Public Property Starred() As Boolean
        Get
            Return m_Starred
        End Get
        Set(value As Boolean)
            m_Starred = Value
        End Set
    End Property
    Private m_Starred As Boolean
    Public Property Hidden() As Boolean
        Get
            Return m_Hidden
        End Get
        Set(value As Boolean)
            m_Hidden = Value
        End Set
    End Property
    Private m_Hidden As Boolean
    Public Property Trashed() As Boolean
        Get
            Return m_Trashed
        End Get
        Set(value As Boolean)
            m_Trashed = Value
        End Set
    End Property
    Private m_Trashed As Boolean
    Public Property Restricted() As Boolean
        Get
            Return m_Restricted
        End Get
        Set(value As Boolean)
            m_Restricted = Value
        End Set
    End Property
    Private m_Restricted As Boolean
    Public Property Viewed() As Boolean
        Get
            Return m_Viewed
        End Get
        Set(value As Boolean)
            m_Viewed = Value
        End Set
    End Property
    Private m_Viewed As Boolean
End Class
 
 
 
Uploading the File to Google Drive and displaying the details on page
 
The very first thing is that you need to set the Client ID and the Client Secret for the GoogleConnect class and you need to set the API as Drive as we need to use the Google Drive API.
The below code looks for access code (access token) in QueryString. If the access code is not found then it redirects user to the authorization page.
 
For this article I am requesting access to the Google Drive of the user by passing the https://www.googleapis.com/auth/drive.file.readonly scope. User can allow and deny and in both cases he is sent back to the URL set as the RedirectUri while creating the application in Google Developer Console.
After the authorization is completed, the access code fetched from QueryString and is passed to the Fetch function of the GoogleConnect class.
The Fetch function returns the list of Google Drive file as JSON string which is then deserialized to the GoogleDriveFiles class object.
 
Note: Google Drive API will also return the files present in Trash folder and hence I have filtered out such files using Lambda expression.
 
C#
protected void Page_Load(object sender, EventArgs e)
{
    GoogleConnect.ClientId = "<Google ClientID>";
    GoogleConnect.ClientSecret = "<Google Client Secret>";
    GoogleConnect.RedirectUri = Request.Url.AbsoluteUri.Split('?')[0];
    GoogleConnect.API = EnumAPI.Drive;
    if (!string.IsNullOrEmpty(Request.QueryString["code"]))
    {
        string code = Request.QueryString["code"];
        string json = GoogleConnect.Fetch("me", code);
        GoogleDriveFiles files = new JavaScriptSerializer().Deserialize<GoogleDriveFiles>(json);
           
        //Remove the deleted files.
        dlFiles.DataSource = files.Items.Where(i => i.Labels.Trashed == false);
        dlFiles.DataBind();
    }
    else if (Request.QueryString["error"] == "access_denied")
    {
        ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "alert('Access denied.')", true);
    }
    else
    {
        GoogleConnect.Authorize("https://www.googleapis.com/auth/drive.readonly");
    }
}
 
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    GoogleConnect.ClientId = ""<Google ClientID>"
    GoogleConnect.ClientSecret = "<Google Client Secret>"
    GoogleConnect.RedirectUri = Request.Url.AbsoluteUri.Split("?"c)(0)
    GoogleConnect.API = EnumAPI.Drive
    If Not String.IsNullOrEmpty(Request.QueryString("code")) Then
        Dim code As String = Request.QueryString("code")
        Dim json As String = GoogleConnect.Fetch("me", code)
        Dim files As GoogleDriveFiles = New JavaScriptSerializer().Deserialize(Of GoogleDriveFiles)(json)
        'Remove the deleted files.
        dlFiles.DataSource = files.Items.Where(Function(i) i.Labels.Trashed = False)
        dlFiles.DataBind()
 
    ElseIf Request.QueryString("error") = "access_denied" Then
        ClientScript.RegisterClientScriptBlock(Me.[GetType](), "alert", "alert('Access denied.')", True)
    Else
        GoogleConnect.Authorize("https://www.googleapis.com/auth/drive.readonly")
    End If
End Sub
 
 
Screenshots
 
The Google Authorization page
Display (View) list of files from Google Drive using Google Drive API in ASP.Net with C# and VB.Net
 
The files from Google Drive being displayed with Thumbnail Image and Download Link
Display (View) list of files from Google Drive using Google Drive API in ASP.Net with C# and VB.Net
 
 
 
Demo
 
 
 
 
Downloads