获取访问令牌和刷新令牌,而无需请求用户权限



我想访问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);
}

在这里,我能够获得访问令牌和刷新令牌,但用户没有被重定向到权限页面,所以当我尝试上传图像到驱动器时,它给了我错误"permission_not_granted"。在 MVC 中使用了同样的东西,效果很好。

请帮我解决这个问题。

我怀疑你已经改变了你的范围。 您需要对用户进行身份验证。 执行下列操作之一

  • 转到 %appdata% 并删除此用户的 creditlas 文件。
  • 将"用户"更改为其他内容,例如"user1">

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

最新更新