Google API .NET无法访问共享文件夹文件

时间:2017-07-12 02:34:42

标签: c# .net google-sheets google-api google-drive-api

我一直在尝试做一些自定义代码,我搜索我拥有的特定字符串的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

1 个答案:

答案 0 :(得分:0)

如果您还没有这样做,请尝试针对401: Invalid Credentials错误的建议操作。使用长期刷新令牌刷新访问令牌。如果此操作失败,请引导用户完成OAuth流程,如Authorizing Your App with Google Drive中所述。

遇到的错误通常是由于以下原因:

  • 令牌到期。
  • 令牌撤销。这将导致访问令牌和刷新令牌停止工作。
  • 令牌未获得所需范围的授权。
  • 使用OAuth 2.0协议未正确授权请求。

有关详细信息,请参阅Handling errors: revoked or invalid tokens