【问题标题】:Forge API NullReferenceException with Credentials.FromSessionAsync()使用 Credentials.FromSessionAsync() 伪造 API NullReferenceException
【发布时间】:2021-01-29 01:29:37
【问题描述】:

我正在https://learnforge.autodesk.io/#/?id=learn-autodesk-forge 编写 Forge API 教程,但遇到了问题。我正在使用 .NET (C#) 示例并一直执行到最后,但是当我尝试运行该应用程序时出现错误。当我运行它时,我得到了我应该得到的登录页面

但是当我单击 AUTODESK 登录时,它会引发错误

Credentials 对象似乎被返回为 NULL。它调用来获取这个对象的代码如下:

   public static async Task<Credentials> FromSessionAsync()
        {
            if (HttpContext.Current.Session == null || 
                HttpContext.Current.Session["ForgeCredentials"] == null)
                return null;

            Credentials credentials = JsonConvert.DeserializeObject<Credentials>(HttpContext.Current.Session["ForgeCredentials"].ToString());
            if (credentials.ExpiresAt < DateTime.Now) await credentials.RefreshAsync();
            return credentials;
        }    

我不确定该代码块中会话凭据的来源。

我是 Forge API 的新手,因此我们将不胜感激。

谢谢 格里

【问题讨论】:

    标签: c# autodesk-forge autodesk


    【解决方案1】:

    以下是您使用 Autodesk 凭据登录后发生的情况,按时间顺序排列:

    • Autodesk 登录页面将您重定向回 Forge 应用程序的回调 URL(通常设置为 api/forge/callback/oauth 之类的内容)

    • 在您的代码中有一个 handler 用于调用 Credentials.CreateFromCodeAsyncapi/forge/callback/oauth 路由

    • Credentials.CreateFromCodeAsync 方法将“ForgeCredentials”属性添加到会话中

    • api/forge/callback/oauth 路由处理程序然后将您重定向回应用程序的主页

    • 主页向api/forge/oauth/token 端点发出请求以从会话中获取访问令牌

    在您的情况下,“ForgeCredentials”属性由于某种原因不可用。可能是应该定义会话属性的代码失败。尝试单步执行api/forge/callback/oauth路由处理程序的代码,看看下面这行代码是否执行成功:

    HttpContext.Current.Session.Add("ForgeCredentials", JsonConvert.SerializeObject(credentials));
    

    【讨论】:

      猜你喜欢
      • 2020-09-09
      • 1970-01-01
      • 2023-02-07
      • 2013-06-09
      • 1970-01-01
      • 2016-12-12
      • 2012-07-08
      • 2016-03-30
      • 2021-02-22
      相关资源
      最近更新 更多