在不请求用户许可的情况下获取访问令牌和刷新令牌
Getting access token and refresh token without asking for user permission
我想访问 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 中使用相同的东西,效果很好。
请帮我解决这个问题。
我怀疑你换了范围。您需要对用户进行身份验证。执行以下操作之一
- 转到 %appdata% 并删除该用户的 creditlas 文件。
- 将 "user" 更改为其他内容 "user1"
然后您的应用程序应要求用户再次进行身份验证。
我想访问 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 中使用相同的东西,效果很好。
请帮我解决这个问题。
我怀疑你换了范围。您需要对用户进行身份验证。执行以下操作之一
- 转到 %appdata% 并删除该用户的 creditlas 文件。
- 将 "user" 更改为其他内容 "user1"
然后您的应用程序应要求用户再次进行身份验证。