OAuth :删除第三方访问

OAuth : remove third party access

我是一名学生,正在开发一款允许用户将视频上传到他们的 YouTube 频道的网络应用程序。它运行良好,但我希望用户能够根据需要撤销该访问权限。

目前,我只是从数据库中删除了用户的访问令牌,但该应用程序仍显示在用户的Google“有权访问您帐户的应用程序”页面中...有什么办法吗撤消该访问权限而无需用户手动转到该页面并单击“删除访问权限”按钮?

Here is an example of manual access removal。我只是想在我的网络应用程序中有一个这样的“删除访问”按钮,它会做同样的事情。有办法吗?

感谢您的帮助!

获取用户的访问令牌,然后向撤销端点发送请求。它将删除用户对您应用的访问权限。

curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
        https://oauth2.googleapis.com/revoke?token={token}

假设您正在使用 Google api .net 客户端库,应该已经有一个撤销方法

 UserCredential cred = await GoogleWebAuthorizationBroker.AuthorizeAsync(
            Helper.GetClientSecretStream(), new string[] { "email" },
            "user", default, new NullDataStore());
        Assert.NotNull(cred);
        var accessToken = await cred.GetAccessTokenForRequestAsync();
        using (var f = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
        {
            ClientSecretsStream = Helper.GetClientSecretStream()
        }))
        {
            // Succeeds if no exception is thrown.
            await f.RevokeTokenAsync("a-user", accessToken, default);
            // Cannot verify revocation, as it takes in indeterminate duration to propagate.
        }