8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

我可以在 C# 中列出通过 Google Drive API 上传的文件,但不能列出通过网站上传的文件

Martin Kirk 2月前

134 0

我无法使用 C3 通过我的 google drive api 列出通过网站上传的文件。但通过 Google Drive API 上传的文件可以列出。如何列出文件夹中的所有文件?我的代码错了吗?这是我的 c#

我无法使用 C3 通过我的 google drive api 列出通过网站上传的文件。但通过 Google Drive API 上传的文件可以列出。如何列出文件夹中的所有文件?我的代码错了吗?这是我的 c# 代码![这是我的代码]

try
{
    var credential = await GetUserCredentialAsync();
    var driveService = GetDriveService(credential);


    var request = driveService.Files.List();
    request.PageSize = 1000;
    request.Q = $"'{folderId}' in parents";
    request.Fields = "nextPageToken, files(id, name)";

    var result = await request.ExecuteAsync();
    var files = result.Files;

    // Create a list to store custom objects with fileName and fileId
    var fileList = new List<object>();

    if (files != null && files.Any())
    {
        foreach (var file in files)
        {
            fileList.Add(new { fileName = file.Name, fileId = file.Id });
        }
    }

    return fileList;
}
catch (Exception ex)
{
    // Log the exception or handle it as needed
    Console.WriteLine($"An error occurred: {ex.Message}");
    // Optionally, rethrow the exception or return an empty list
    // throw;
    return new List<object>();
}

这段代码有什么错误吗?我可以列出通过 google drive api 上传的文件。

这是“我的云端硬盘”中的文件

但这是我调用 driveService.Files.List 时的结果

[
    {
        "fileName": "ThisFileUploadByGoogleAPI.txt",
        "fileId": "1v-ZhJC5q_iA6suxE-tAjLGDq2WBEOl1f"
    }
]
帖子版权声明 1、本帖标题:我可以在 C# 中列出通过 Google Drive API 上传的文件,但不能列出通过网站上传的文件
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Martin Kirk在本站《.net》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我猜这是权限问题:您使用驱动器 API 上传的文件对您在此处进行身份验证的用户不可见。您可以检查驱动器中的文件权限吗?

  • 嗨@Rup 当我使用 getList 函数时,使用网络浏览器上传到 Google Drive 的文件不可见。但是,使用此代码使用 Google Drive API 上传的文件可见。

  • @LindaLawton-DaImTo 你好 1.我的身份验证私有静态字符串[] Scopes = { DriveService.Scope.Drive }; credential = await GoogleWebAuthorizationBroker.AuthorizeAsync( clientSecrets, Scopes, \'user\', CancellationToken.None, new FileDataStore(\'GoogleApiAuthStore\'), port ); 2.我没有收到任何错误。我只是没有获取文件夹中的所有文件。 3.我的意思是,当我调用我的函数获取文件列表时,使用 GoogleDrive 网站上传的文件不可见。

  • 您可以编辑您的问题并将代码放入您的问题中吗?您确定您正在使用您授权该应用程序的同一用户将文件上传到网站吗?

  • 我使用一个朋友的服务器,该服务器只允许一个用户从 SSH 登录,因此通常我只是以该用户身份登录,然后执行 su -l myuser 来更改帐户。我想让我们自动完成一些无聊的事情...

    我使用一个朋友的服务器,它只允许一个用户从 SSH 登录,所以通常我只是以该用户身份登录,然后更改 su -l myuser 帐户。我想使用 Python 自动执行一些无聊的事情,但遇到了问题。显然,我首先尝试的 Paramiko 模块为每个命令调用一个 shell,所以这是不可能的。后来我尝试使用它 invoke_shell() 来克服这个问题,但仍然失败了(我猜是因为更改用户也会更改 shell)。

    之后我找到了 Fabric 模块,但我能做的最好的就是以正确的用户登录打开 SSH shell,但不能选择从代码运行任何命令。

    有什么办法可以实现这个吗?最终目标可能是这样的:

    ssh.login(temp_user, pass)
    ssh.command("su -l myuser")
    expect("Password: ", ssh.send("mypass\n")
    ssh.command("somescript.sh > datadump.txt")
    

    使用 sudo 是不可能的,以及添加无密码登录。

    正如这里所建议的,这是我使用 Paramiko 尝试的代码:

    import paramiko
    
    host = "hostip"
    user = "user"
    user_to_log = "myuser"
    password = "pass"
    password_to_log = "mypass"
    
    login_command = "su -l " + user_to_log
    
    ssh = paramiko.SSHClient()
    ssh.load_system_host_keys()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostip, username=user, 
        password=password)    
    
    transport = ssh.get_transport()
    session = transport.open_session()
    session.set_combine_stderr(True)
    session.get_pty()
    
    
    session.exec_command("su -l " + user_to_log)
    stdin = session.makefile('wb', -1)
    
    
    stdin.write(password_to_log +'\n')
    stdin.flush()
    
    session.exec_command("whoami")
    stdout = session.makefile('rb', -1)
    
    for line in stdout.read().splitlines():        
        print('host: %s: %s' % (host, line))
    

    su -c command 也不起作用,因为服务器系统不支持该选项。

  • 首先是一般免责声明(对于偶然发现此问题的其他人):

    • p1

      p2

      p3

      p4

    • p5

      su -c "whoami" user

      p6


    如果以上方法均不可行(并且您确实尽力让管理员启用上述某些选项):

    作为最后的选择,您可以将命令写入标准输入 su ,就像您已经写入密码一样(另一件不要做的事情):

    stdin, stdout, stderr = session.exec_command("su -l " + user_to_log)
    
    stdin.write(password_to_log + '\n')
    stdin.flush()
    
    command = 'whoami'
    stdin.write(command + '\n')
    stdin.flush()
    

    (另请注意,调用是多余的 makefile ,因为 exec_command 已经返回了该值)

    请参阅 在 Python Paramiko 中的 SSH 服务器上的辅助 shell/命令中执行(子)命令 .


    请注意,您的问题不是关于使用哪个 SSH 客户端库。使用 Paramiko 还是其他库并不重要。这实际上是一个通用的 SSH/Linux/shell 问题。

返回
作者最近主题: