好的,所以我正试着在我的.Net网络应用程序(Blazor)中设置OAuth到Google.

我已经设置了请求授权码的第一部分并正在进行工作.

然而,一旦我有了验证码,我就应该把它换成令牌并刷新令牌.

为此,我使用了Google.Net Auth库.我找到了一个样品并试了试,但我得到的唯一结果是:Error:"invalid_grant", Description:"Bad Request", Uri:""

我在这上面搜索了一下,找到了this个.我已经判断了所有可能的问题,但没有一个适用于我的测试.即,时钟未关闭、用户(我)未撤销访问权限、密码最近未更改等.

在我看来,这个调用应该不难,但我花了几个小时try 调试它.我正在使用官方的库来解决这个问题,但我怀疑有些东西不能正常工作.代码是这样的:

GoogleAuthorizationCodeFlow authorizationCodeFlow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
    DataStore = dataStore,
    ClientSecrets = new ClientSecrets()
    {
        ClientId = clientId,
        ClientSecret = clientSecret
    }
});

try
{

    var tokenResponse = await authorizationCodeFlow.ExchangeCodeForTokenAsync(
        userId, // user for tracking the userId on our backend system
         authorizationCode,
        "https://localhost:7155/gauth", // redirect_uri can not be empty. Must be one of the redirects url listed in your project in the api console
        CancellationToken.None);
 

我该怎么办?跳过.Net库,直接从我自己的代码调用API?

每次获取授权码的第一次调用都能完美地工作,不确定为什么这一步如此困难.

推荐答案

GoogleAuthorizationCodeFlow是Google API.Net客户端库的一部分,不支持Blazor授权.

最好的办法是放弃库并try 自己编写授权代码.

Csharp相关问答推荐

如何循环遍历XML文档 node 以使用XSLT存储值

WPF Windows初始化正在锁定. Net 8中分离的线程

如何使用ConcurentDictionary属性上的属性将自定义System.Text.Json JsonConverter应用于该属性的值?

为什么总输出就像12.3没有一分一样?

如何模拟耐久任务客户端在统一测试和获取错误在调度NewsListationInstanceAsync模拟设置

只有第一个LINQ.Count()语句有效

如何测量在使用UTF8而不是C#中的UTF16编码字符串时内存使用量的增长

我想在文本框悬停时在其底部显示一条线

C#无法让WinForm进度条生成动画错误跨线程操作无效

如何注册类使用多级继承与接口

单元测试:模拟返回空

将字节转换为 struct 并返回

DateTime ToString()未以指定格式打印

对于PowerShell中的ConvertTo-SecureString方法,Microsoft如何将初始化向量添加到AES加密中的安全字符串?

是否可以从IQueryable T中获取一个IdentyEntry T>

为什么Swashbakle/Swagger在参数中包含变量名?

在Visual Studio 2022中查找Xamarin模板时遇到问题

缩写的MonthNames有问题

同时通过多个IEumable<;T&>枚举

SendInput无法在C#中正确模拟键盘