1

我已經在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只是應該這樣工作,它總是將文件上傳到您正在迅速登錄的帳戶。

+0

你在哪裏指定USEREMAIL?另外,你可以重新格式化你的代碼,所以我們不需要像往常那樣滾動一下嗎? –

+0

FileDataStore存儲與您正在發送的任何Me.UserEmail相關的身份驗證。您需要將其更改或創建自己的Idatastore實現來移動您的令牌。 – DaImTo

+0

對不起,我編輯了代碼,因此它更清晰。 userEmail在證書聲明處傳遞。但我認爲這不重要,我放在那裏 – Nadyn

回答

1

此行Dim credentials As UserCredential = GoogleWebAuthorizationBroker... 說:「請去詢問當前登錄用戶是否允許訪問他驅動並將結果存儲在憑證中,然後我可以將其呈現給雲端硬盤「。

如果我正確理解你的問題,你想要的是「忽略當前登錄的用戶。請給我一個我想上傳的固定帳戶的憑證,而不必通過任何認證流程」。

如果我有你的問題的權利,答案是How do I authorise an app (web or installed) without user intervention? (canonical ?)

相關問題