在Intuit QuickBooks的C#中刷新访问令牌后,OAuth2 CRUD请求被禁止

问题描述

我正在尝试制作一个控制台应用程序,该应用程序对QuickBooks Online执行CRUD请求。第一步,我很难从Web请求中获取沙盒公司信息。

这是我的代码的基本分类

static void ConnectToQB()
{
    var service = GetServiceContext();
    QueryService<CompanyInfo> entityQuery = new QueryService<CompanyInfo>(service);
    List<CompanyInfo> companyInfo = entityQuery.ExecuteIdsQuery("SELECT * FROM CompanyInfo").ToList();
}

static ServiceContext GetServiceContext()
{
    var accesstoken = GetAccesstoken();
    var oauthValidator = new OAuth2RequestValidator(accesstoken);

    ServiceContext qboContext = new ServiceContext("<realm_ID>",IntuitServicesType.QBO,oauthValidator);

    return qboContext;
}

static string GetAccesstoken()
{
    oauth2client oauthClient = new oauth2client("<client_ID>","<client_secret>","<localhost_redirectURL>","sandBox");

    var prevIoUsRefreshToken = GetRefreshToken();
    var tokenResp = oauthClient.RefreshTokenAsync(prevIoUsRefreshToken);
    tokenResp.Wait();
    var data = tokenResp.Result;

    if (!String.IsNullOrEmpty(data.Error) || String.IsNullOrEmpty(data.RefreshToken) || String.IsNullOrEmpty(data.Accesstoken))
        Console.WriteLine("Refresh token Failed - " + data.Error);

    // If we've got a new refresh_token store it in the file
    if (prevIoUsRefreshToken != data.RefreshToken)
    {
        WriteRefreshToken(data.RefreshToken);
    }
    return data.Accesstoken;
}

基本上使用通过其开发人员应用程序生成的refresh_token获取新的access_token。坏了

entityQuery.ExecuteIdsQuery("SELECT * FROM CompanyInfo")

错误

403禁止访问:访问令牌的作用域不足。

我尝试过更改redirectURL和所指向的环境,但是没有运气。我能想到的最好的一点是,我没有正确构造请求的结构,但是找不到任何可以帮助我解决请求的东西。

有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)