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解决,并使用我在已添加的答案中链接的解决方案。 –

相关问题