You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Schoology API无法正常调用且抛出网络错误,请求排查是否已废弃

关于Schoology API调用失败的排查与解决方案

核心问题拆解

  1. API状态不明确:官方文档未说明v1版API是否废弃,这可能是服务端无响应的潜在原因
  2. 网络/服务端故障:排除客户端基础网络问题后,服务端端点下线、维护或认证机制变更是大概率诱因
  3. 代码认证逻辑错误:当前的OAuth认证方式不符合Schoology API要求,这本身也会导致调用失败

代码修正方案

Schoology API使用OAuth 1.0协议,要求完整的签名流程(包含oauth_nonce、oauth_timestamp、oauth_signature等参数),而非直接将密钥放入请求头。以下是修正后的代码,加入了错误处理和规范的OAuth签名生成(使用oauth-1.0a库简化流程):

首先安装依赖:

npm install oauth-1.0a

修正后的组件代码:

import React, { useState, useEffect } from "react";
import OAuth from "oauth-1.0a";
import crypto from "crypto";

const API_KEY = "72f0fef42061705869c0d0a8d971b2b0063e32423";
const API_SECRET = "03260a5f78a194fb7b0de3bb05893254";
const API_URL = "https://api.schoology.com/v1/assignments";

// 初始化OAuth客户端
const oauth = OAuth({
  consumer: { key: API_KEY, secret: API_SECRET },
  signature_method: "HMAC-SHA1",
  hash_function: (base_string, key) => crypto.createHmac("sha1", key).update(base_string).digest("base64"),
});

function App() {
  const [assignments, setAssignments] = useState([]);
  const [error, setError] = useState("");

  useEffect(() => {
    const fetchAssignments = async () => {
      try {
        const requestData = {
          url: API_URL,
          method: "GET",
        };

        // 生成OAuth认证头
        const headers = oauth.toHeader(oauth.authorize(requestData));
        
        const response = await fetch(API_URL, { headers });
        
        if (!response.ok) {
          throw new Error(`请求失败:${response.status} ${response.statusText}`);
        }

        const data = await response.json();
        setAssignments(data.assignments || []);
      } catch (err) {
        setError(err.message);
        console.error("API调用错误:", err);
      }
    };

    fetchAssignments();
  }, []);

  return (
    <div>
      <h1>Assignments</h1>
      {error && <p style={{ color: "red" }}>{error}</p>}
      <ul>
        {assignments.map((assignment) => (
          <li key={assignment.id}>{assignment.title}</li>
        ))}
      </ul>
    </div>
  );
}

export default App;

额外排查步骤

  • 手动验证API端点:用Postman或curl工具模拟请求,查看具体错误码(如404说明端点可能废弃,500说明服务端故障,401说明认证错误)
  • 确认API状态:查看Schoology开发者社区或状态页面,核实是否有API版本迭代或服务中断通知
  • 检查权限:确保你的API密钥拥有访问作业资源的权限,部分权限可能需要在开发者后台手动开启

内容的提问来源于stack exchange,提问作者HarenP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:01:14