1

So I followed a few examples from http://www.daimto.com/, namely http://www.daimto.com/webmaster-tools-api-with-c/. After a long night I was able to get it to work. the way I did that is by simply removing

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

changing the code to:

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

So is the datastore really necessary? when I add it, my IIS is generating a new port number each refresh, making it impossible to authorize url redirects in google. btw, I tried the physical full path of the directory, but it results the same.

4

2 回答 2

1

如果默认情况下不包含文件数据存储或任何数据存储,客户端库将使用文件数据存储并在 %appData% 中创建文件

所以从技术上讲,你不需要使用它。

FileDataStore 到底是做什么的?

让我们看看 FileDataStore。当以下代码进行身份验证时。将在执行代码的机器上的 %AppData% 目录中创建一个名为 Drive.Auth.Store 的文件夹。

所以我们将有一个名为 %AppDatat%\Drive.Auth.Store 的新目录。当我检查我的机器时,我在这里找到它 C:\Users\lindaHP\AppData\Roaming\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

每个用户都将拥有自己的文件,您可以通过更改“LookIAmAUniqueUser”值来更改用户。

该文件包含访问此用户帐户所需的所有信息。

备用教程

我有另一个教程给你。 Google .net – FileDatastore 揭秘

我的笔记

我不知道不使用 filedatastore 会如何改变端口出现与否。我需要对此进行测试,这可能是客户端库中的错误。或者我猜的一个功能取决于你如何看待它。

于 2016-01-22T11:57:55.183 回答
0

看来这个解决方案只是错误的方式,也许只是过时了。最后,我在此基础上重写了所有内容。现在它可以在本地和已发布以及 FileDataStore 上找到。

于 2016-01-23T22:15:20.100 回答