在不寻求用户许可的情况下获取访问令牌和刷新令牌

时间:2018-08-23 21:32:25

标签: c# google-api google-drive-api google-oauth google-api-dotnet-client

我想访问Google云端硬盘以使用Google.Apis.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,但是用户没有重定向到权限页面,因此当我尝试上载图像进行驱动时,出现“ permission_not_granted”错误。在MVC中使用了同样的东西,效果很好。

请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:1)

我怀疑您已经更改了范围。您需要验证用户。请执行以下任一操作

  • 转到%appdata%并删除该用户的creditlas文件。
  • 将“用户”更改为其他名称“ user1”

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