【问题标题】:Google Drive API invalid_grant after removing access删除访问权限后的 Google Drive API invalid_grant
【发布时间】:2014-06-03 20:26:42
【问题描述】:

我一直在编写一个使用 Google Drive API v2 的桌面应用程序。我有以下代码:

var credential = GoogleWebAuthorizationBroker.AuthorizeAsync
(
    new ClientSecrets { ClientId = ClientID, ClientSecret = ClientSecret },
    new[] { DriveService.Scope.Drive }, "user", CancellationToken.None
)
.Result;

this.Service = new DriveService( new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = "My Test App",
} );

var request = this.Service.Files.List();
request.Q = "title = 'foo' and trashed = false";
var result = request.Execute();

我第一次运行此代码时,它打开了一个浏览器并要求我授予该应用程序的权限,我照做了。一切都很顺利,直到我意识到我使用了错误的 Google 帐户。那时我登录了错误的 Google 帐户并撤销了对我的应用程序的访问权限。现在,每当我运行相同的代码时,它都会引发异常:

错误:“invalid_grant”,描述:“”,Uri:“”

当我检查服务和请求对象时,似乎不再创建 oauth_token。

我知道我做了什么把事情搞砸了,但我不知道如何纠正它,所以我可以使用不同的 Google 帐户进行测试。我需要做什么?

【问题讨论】:

    标签: c# google-api google-drive-api


    【解决方案1】:

    使用StorageDataStore 保存存储的凭据。您可以调用DeleteAsync()方法或手动查找并删除该文件。

    【讨论】:

    • StorageDataStore 无法识别。我有 FileDataStore,但它需要一个文件夹作为参数。我错过了什么吗?有什么方法可以在抛出异常之前判断凭据是否已过期或被撤销?
    • 更多关于如何存储凭据的信息在这里:developers.google.com/api-client-library/dotnet/guide/aaa_oauth
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多