C# 在不请求用户权限的情况下获取访问令牌和刷新令牌

C# 在不请求用户权限的情况下获取访问令牌和刷新令牌,c#,google-api,google-drive-api,google-oauth,google-api-dotnet-client,C#,Google Api,Google Drive Api,Google Oauth,Google Api Dotnet Client,我想访问Google Drive,使用Google.api.Drive.v3上传文件。 这是我的密码: protected async void btnConnectGoogleDrive_Click(object sender, EventArgs e) { string[] Scopes = { DriveService.Scope.Drive }; UserCredential credential; credential = await GoogleWebAuth

我想访问Google Drive,使用Google.api.Drive.v3上传文件。 这是我的密码:

protected async void btnConnectGoogleDrive_Click(object sender, EventArgs e)
{
    string[] Scopes = { DriveService.Scope.Drive };
    UserCredential credential;
    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
            new ClientSecrets
            {
                ClientId = "",
                ClientSecret = ""
            },
            Scopes,
            "user",
            CancellationToken.None);

    InsertGoogleDriveToken(credential.Token.AccessToken, areaID, "accesstoken");
    InsertGoogleDriveToken(credential.Token.RefreshToken, areaID, "refreshtoken");

    // Create Drive API service.
    var service = new DriveService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = "SocialLadder",
    });

    GoogleDriveUpload(service, areaID);
}
在这里,我可以获得AccessToken和RefreshToken,但用户没有重定向到权限页,因此当我尝试上载图像以驱动时,它会给我错误消息“权限未授予”。在MVC中使用了同样的东西,效果非常好


请帮我解决这个问题。

我怀疑您更改了范围。您需要对用户进行身份验证。执行以下操作之一

  • 转到%appdata%并删除此用户的creditlas文件
  • 将“user”改为其他名称,如“user1”

然后,应用程序应要求用户再次进行身份验证。

在%appdata%中没有文件。但将“用户”改为“用户1”效果很好。我能知道什么是“用户”吗??如果我使用用户useremail而不是“user”是否好?文件数据存储存储由您发送给它的用户表示的凭据文件电子邮件是个好主意或用户ID非常感谢@DalmTo的帮助。还有一个问题,如果我想将访问令牌和刷新令牌保存在数据库中而不是存储在文件中,该怎么办?基本上,我想做的是我想运行一个后台工作,每天将新图像从服务器上传到谷歌硬盘。所以我不希望用户每次都进行身份验证。您使用的是服务帐户还是常规用户帐户?我使用的是常规用户帐户