我一直在尝试做一些自定义代码,我搜索我拥有的特定字符串的Google Sheet文件。现在我有这个工作,我使用ApiKey进行身份验证,一切正常,但是!我必须将文件的隐私更改为“Public with url”才能工作。我觉得这不太合适......
然后我转到下一步,遍历文件夹及其子文件夹中的所有文件,并在所有文件上搜索该字符串,这里是我遇到问题的地方......
{ cat << 'EOT'; cat << EOF; } > /path/to/file
This $var will not be interpolated in the output
EOT
But this $var will!
EOF
我收到了这个错误:
string ApplicationName = "My App Name";
string[] Scopes = { DriveService.Scope.Drive, DriveService.Scope.DriveFile };
// Create Google Sheets API service.
var service = new DriveService(new BaseClientService.Initializer
{
ApplicationName = ApplicationName,
ApiKey = AppSettings.GetValue(AppSettings.API_KEY)
});
String folderId = "folder_id";
ChildrenResource.ListRequest request = service.Children.List(folderId);
do
{
try
{
ChildList children = request.Execute();
foreach (ChildReference child in children.Items)
{
Console.WriteLine("File Id: " + child.Id);
}
request.PageToken = children.NextPageToken;
}
catch (Exception e)
{
Console.WriteLine("An error occurred: " + e.Message);
request.PageToken = null;
}
} while (!String.IsNullOrEmpty(request.PageToken));
相同的API密钥是我用于另一块代码的密钥,我检查单个文件是否有字符串。我认为问题的区别在于,我想要迭代文件的文件夹是与我共享的(我不是专有的,但我对它有完全的访问权限)。我也尝试将其隐私更改为公开而没有结果。
你知道我收到这个错误吗?我没有线索。
SOLUTION:
Google.Apis.Requests.RequestError
Login Required [401]
Errors [
Message[Login Required] Location[Authorization - header] Reason[required] Domain[global]
]
我从OAuth2 Playground获得的所有代币和密钥都很容易理解。还要感谢另一个人answer。
答案 0 :(得分:0)
如果您还没有这样做,请尝试针对401: Invalid Credentials错误的建议操作。使用长期刷新令牌刷新访问令牌。如果此操作失败,请引导用户完成OAuth流程,如Authorizing Your App with Google Drive中所述。
遇到的错误通常是由于以下原因:
有关详细信息,请参阅Handling errors: revoked or invalid tokens。