所以我跟随了Lazy foreach on a Spark RDD的一些例子,即http://www.daimto.com/。经过漫长的一夜,我能够让它上班。我这样做的方法是简单地删除
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每次刷新都会生成一个新的端口号,这使得无法在google中授权URL重定向。 顺便说一句,我尝试了目录的物理完整路径,但结果相同。
答案 0 :(得分: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 demystified
请注意
我不知道如何使用filedatastore不会改变出现的端口。我需要测试它可能是客户端库中的错误。或者我猜的功能取决于你如何看待它。
答案 1 :(得分:0)
似乎这种解决方案只是错误的方式,也许只是过时了。最后,我重写了基于this的所有内容。现在它可以在本地和已发布的文件中找到它们,并使用FileDataStore。