将Google Drive快速入门代码导入到Visual Basic中

问题描述:

我试图将.Net的快速入门代码导入到Visual Basic(VB .NET),并且出现了一些错误。我是这种编程的新手。希望得到一些指示,或者指出某些根本上与代码有关的错误。将Google Drive快速入门代码导入到Visual Basic中

感谢帮助!

,我得到的,当我尝试编译控制台应用程序的错误是:为参数“私人共享功能GetAuthorization的“ARG”(ARG作为Google.Apis.Authentication没有指定

错误2参数。 OAuth2.DotNetOpenAuth.NativeApplicationClient)作为DotNetOpenAuth.OAuth2.IAuthorizationState'。 C:\ Documents and Settings \ Hirak \ Local Settings \ Application Data \ Temporary Projects \ Nipod Drive Console \ Module1.vb 22 86 Nipod Drive Console

错误3'BaseClientService'在命名空间'Google.Apis.Services中不明确”。 C:\ Documents和Settings \ Hirak \本地设置\应用数据\临时项目\ Nipod驱动控制台\ Module1.vb中23 48 Nipod驱动控制台

Imports System 
Imports System.Diagnostics 
Imports DotNetOpenAuth.OAuth2 
Imports Google.Apis.Authentication.OAuth2 
Imports Google.Apis.Authentication.OAuth2.DotNetOpenAuth 
Imports Google.Apis.Drive.v2 
Imports Google.Apis.Drive.v2.Data 
Imports Google.Apis.Util 
Imports Google.Apis.Services 

Namespace GoogleDriveSamples 

Class DriveCommandLineSample 

    Shared Sub Main(ByVal args As String) 

     Dim CLIENT_ID As [String] = "YOUR_CLIENT_ID" 
     Dim CLIENT_SECRET As [String] = "YOUR_CLIENT_SECRET" 

     '' Register the authenticator and create the service 
     Dim provider = New NativeApplicationClient(GoogleAuthenticationServer.Description, CLIENT_ID, CLIENT_SECRET) 
     Dim auth = New OAuth2Authenticator(Of NativeApplicationClient)(provider, GetAuthorization) 
     Dim service = New DriveService(New BaseClientService.Initializer() With { _ 
.Authenticator = auth _ 
}) 

     Dim body As New File() 
     body.Title = "My document" 
     body.Description = "A test document" 
     body.MimeType = "text/plain" 

     Dim byteArray As Byte() = System.IO.File.ReadAllBytes("document.txt") 
     Dim stream As New System.IO.MemoryStream(byteArray) 

     Dim request As FilesResource.InsertMediaUpload = service.Files.Insert(body, stream, "text/plain") 
     request.Upload() 

     Dim file As File = request.ResponseBody 
     Console.WriteLine("File id: " + file.Id) 
     Console.WriteLine("Press Enter to end this process.") 
     Console.ReadLine() 
    End Sub 



    Private Shared Function GetAuthorization(ByVal arg As NativeApplicationClient) As IAuthorizationState 

     ' Get the auth URL: 
     Dim state As IAuthorizationState = New AuthorizationState(New() {DriveService.Scopes.Drive.GetStringValue()}) 

     state.Callback = New Uri(NativeApplicationClient.OutOfBandCallbackUrl) 
     Dim authUri As Uri = arg.RequestUserAuthorization(state) 

     ' Request authorization from the user (by opening a browser window): 
     Process.Start(authUri.ToString()) 
     Console.Write(" Authorization Code: ") 
     Dim authCode As String = Console.ReadLine() 
     Console.WriteLine() 

     ' Retrieve the access token by using the authorization code: 
     Return arg.ProcessUserAuthorization(authCode, state) 

    End Function 

End Class 


End Namespace 
+0

我不知道有关错误与“BaseClientService”相关,但是出现错误(错误2)我认为这是因为:'Dim auth = New OAuth2Authenticator(Of NativeApplicationClient)(provider,GetAuthorization)'应该是这样的:'Dim auth = New OAuth2Authenticator(Of NativeApplicationClient) AddressOf GetAuthorization)'而不是 – nkvu 2013-04-29 20:51:56

+0

@nkvu谢谢!它期待着'AddressOf',并且这种改变确实关心了这个错误。 – 2013-04-30 14:14:12

+0

Base Client是由于将Silverlight .dll库添加到项目中所致。它不需要在那里。我拿出来了,这个错误已经消失了。 – 2013-05-01 18:17:04

我reliase这是一个老问题,但是这可能帮助别人的未来,请务必在框架编译3.5

对不起不能似乎编辑或删除我以前的答案,因为在将来的任何人,这应该帮助:

Imports System 
Imports System.Diagnostics 
Imports DotNetOpenAuth.OAuth2 
Imports Google.Apis.Authentication.OAuth2 
Imports Google.Apis.Authentication.OAuth2.DotNetOpenAuth 
Imports Google.Apis.Drive.v2 
Imports Google.Apis.Drive.v2.Data 
Imports Google.Apis.Util 
Imports System.Security 
Imports Google.Apis.Services 


Public Class GoogleDrive 
    Public Function UploadFile() As Boolean 
     Const CLIENT_ID As String = "xxxxxxxxxxxxx.apps.googleusercontent.com" 
     Const CLIENT_SECRET As String = "-yyyyyyyyyyyyyyyyyyyyyyy" 

     'Register the authenticator and create the service 
     Dim provider As NativeApplicationClient = New NativeApplicationClient(GoogleAuthenticationServer.Description, CLIENT_ID, CLIENT_SECRET) 
     Dim getAuth As Func(Of NativeApplicationClient, IAuthorizationState) = AddressOf GetAuthorization 
     Dim auth As OAuth2Authenticator(Of NativeApplicationClient) = New OAuth2Authenticator(Of NativeApplicationClient)(provider, getAuth) 
     Dim service = New DriveService(New BaseClientService.Initializer() With {.Authenticator = auth}) 

     Dim body As File = New File() 
     body.Title = "My document" 
     body.Description = "A test document" 
     body.MimeType = "text/plain" 

     Dim byteArray As Byte() = System.IO.File.ReadAllBytes("D:\document.txt") 
     Dim stream As System.IO.MemoryStream = New System.IO.MemoryStream(byteArray) 

     Dim request As FilesResource.InsertMediaUpload = service.Files.Insert(body, stream, "text/plain") 
     request.Upload() 
     Dim file As File = request.ResponseBody 
     MessageBox.Show("File : " & file.Id) 
    End Function 

    Private Function GetAuthorization(ByVal Client As NativeApplicationClient) As IAuthorizationState 

     Dim RetVal As IAuthorizationState 
     Dim state As IAuthorizationState = New AuthorizationState(New String() {DriveService.Scopes.Drive.GetStringValue()}) 

     'Check to see if we have a saved refresh token 
     If My.Settings.SavedAuth.ToString <> "" Then 

      state.RefreshToken = My.Settings.SavedAuth 

      If (Client.RefreshToken(state)) Then 
       Return state 
      End If 
     End If 

     'Get the auth URL: 
     state.Callback = New Uri(NativeApplicationClient.OutOfBandCallbackUrl) 
     Dim authUri As Uri = Client.RequestUserAuthorization(state) 

     'Request authorization from the user (by opening a browser window): 
     Process.Start(authUri.ToString()) 

     'wait until user has entered the code 
     Dim authCode As String = InputBox("Authorisation code", "Authorisation Code", "") 

     'Retrieve the access token by using the authorization code: 
     RetVal = Client.ProcessUserAuthorization(authCode, state) 

     'store the refresh token 
     Call StoreRefreshToken(state.RefreshToken) 

     Return RetVal 

    End Function 

    Private Function LoadRefreshToken() As String 

     Return My.Settings.SavedAuth 

    End Function 

    Private Sub StoreRefreshToken(ByVal Token As String) 

     My.Settings("SavedAuth") = Token 
     My.Settings.Save() 

    End Sub 

End Class