1

因此我遵循http://www.daimto.com/的幾個示例,即http://www.daimto.com/webmaster-tools-api-with-c/。經過漫長的一夜之後,我才得以開始工作。我這樣做的方式是通過簡單地移除GoogleWebAuthorizationBroker中的新FileDataStore每次都會產生一個新端口

new FileDataStore("Daimto.GoogleWebMasters.Auth.Store") 

的代碼更改爲:

UserCredential credential = GoogleWebAuthorizationBroker(new ClientSecrets 
{ ClientId = clientId, ClientSecret = clientSecret }                        
, scopes                      
, userName                     
, CancellationToken.None                  
, null).Result; // <-- notice null here 

那麼,真的有必要的數據存儲?當我添加它時,我的IIS每次刷新都會生成一個新的端口號,這使得無法在谷歌中授權url重定向。 btw,我嘗試了目錄的物理完整路徑,但結果相同。

回答

0

看來這種解決方案只是錯誤的方式,或許只是過時。最後,我重寫了基於this的所有內容。現在它可以在本地和已發佈的文件以及FileDataStore中找到。

1

如果不包括文件存儲或爲此事在默認情況下客戶端庫將使用文件數據存儲,並在%APPDATA%文件

因此從技術上講任何數據存儲來說,你並不需要使用它。

FileDataStore究竟做了什麼?

讓我們看看FileDataStore。當下面的代碼進行身份驗證時。名爲Drive.Auth.Store的文件夾將在執行代碼的機器上的%AppData%目錄中創建。

因此,我們將有一個名爲%AppDatat%\ Drive.Auth.Store的新目錄。當我檢查我的機器,我覺得在這裏C:\用戶\ lindaHP \應用程序數據\漫遊\ Drive.Auth.Store

UserCredential credential; 
using (var stream = new FileStream(clientSecretsJsonFilePath 
            ,FileMode.Open 
            ,FileAccess.Read)) 
     { 
     credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
     GoogleClientSecrets.Load(stream).Secrets, 
     new[] { DriveService.Scope.Drive, DriveService.Scope.DriveFile }, 
     "LookIAmAUniqueUser", 
     CancellationToken.None, 
     new FileDataStore("Drive.Auth.Store")        
    ).Result; 
     } 

假設用戶點擊接受認證請求屏幕上,一個新的文件將被創建具有以下結構的目錄:

Google.Apis.Auth.OAuth2.Responses.TokenResponse-LookIAmAUniqueUser.TokenResponse-LookIAmAUniqueUser

每個用戶都會有自己的文件,您可以通過更改更改用戶「LookIAmAUnique用戶「值。

該文件包含您需要訪問此用戶帳戶所需的全部信息。

替代教程

我有其他的教程爲您服務。 Google .net – FileDatastore demystified

注意從我

我不知道沒有使用如何filedatastore會改變出現與否的端口。我需要測試它可能是客戶端庫中的一個錯誤。或者我想這取決於你如何看待它。

+0

在GoogleApis.Auth.DotNet4/OAuth2/LocalServerCodeReceiver中。cs,端口在GetRandomUnusedPort()中隨機分配() –

+0

謝謝DalmTo,我讀了你的建議,並嘗試了一個自定義的DataStore。這並沒有改變隨機端口問題。此外,我發現當我發佈解決方案時,它會引發錯誤。所有這些問題都可以通過避免使用GoogleWebAuthorizationBroker解決,並使用我在已添加的答案中鏈接的解決方案。 –

相關問題