我已经在VB.NET中做了一个小程序,基本上,与Google云端硬盘同步一个目录,然后它获取共享链接,并为此创建一个快捷方式文件上传的文件。所有的工作都很好,很好。现在,当我开始使用不同帐户进行游戏时,我的问题就出现了,而不仅仅是我正在运行测试的帐户。 我发现,当我使用此代码验证:谷歌驱动器:上传到一个不同的帐户比活动的
Dim clientS As ClientSecrets = New ClientSecrets()
clientS.ClientId = "ClientID"
clientS.ClientSecret = "MySecret"
Dim scopes As IList(Of String) = New List(Of String)()
scopes.Add(DriveService.Scope.Drive)
scopes.Add(DriveService.Scope.DriveFile)
Dim credentials As UserCredential = GoogleWebAuthorizationBroker.AuthorizeAsync(clientS, scopes, Me.UserEmail, System.Threading.CancellationToken.None, New FileDataStore(Me.TokensFolderPath)).Result
Dim initializer As BaseClientService.Initializer = New BaseClientService.Initializer()
initializer.HttpClientInitializer = credentials
initializer.ApplicationName = "Drive API Test"
Me.service = New DriveService(initializer)
第一次,这将打开一个浏览器窗口,并要求用户进行权限查看,编辑,...您的文件。然后它会创建一个令牌以避免在下次应用程序运行时询问。 问题是,即使我在代码上指定了一个userEmail,它也不在乎。它只会打开浏览器,并以您在该时刻处于活动状态的任何帐户询问权限,因此,创建的令牌将属于该帐户,而不属于我指定的帐户。
我做错了什么或有什么缺失?或者,也许API只是应该这样工作,它总是将文件上传到您正在迅速登录的帐户。
你在哪里指定USEREMAIL?另外,你可以重新格式化你的代码,所以我们不需要像往常那样滚动一下吗? –
FileDataStore存储与您正在发送的任何Me.UserEmail相关的身份验证。您需要将其更改或创建自己的Idatastore实现来移动您的令牌。 – DaImTo
对不起,我编辑了代码,因此它更清晰。 userEmail在证书声明处传递。但我认为这不重要,我放在那里 – Nadyn