通过 Open Edx API 身份验证或替代方法访问 `student_view_url`?
Accessing the `student_view_url` via Open Edx API authentication or alternatives?
我正在开发一个 React Native 应用程序,其中所有 Edx 课程信息都需要离线显示。
我已经使用 oauth2 端点(client_id=…&grant_type=password&username=user@example.com&password=p455w0rd
到 {{root}}/oauth2/access_token/
)对应用程序进行了身份验证,并且可以访问 API 端点来让用户注册课程({{root}}/api/enrollment/v1/enrollment
)以及这些课程中的模块 ({{root}}/api/courses/v1/blocks/?course_id={{course_id_url_friendly}}&depth=all&nav_depth=3&return_type=list&username={{username}}
)。我正在努力获取的是 HTML 块的内容。
我在官方应用程序中看到(当通过代理查看请求时)它将请求课程的实际网页,大概是 student_view_url
。
这是获取该内容的唯一方法,还是有一个 API 端点我可以用来 return 内容?
如果唯一的方法是请求呈现的 student_view_url
,我该如何访问该页面?我在官方应用程序中唯一可以判断的方式是它看起来正在传递 cookie 以使用 studen_view_url
进行身份验证,它必须在通过 oauth2 端点授权用户时获得。我得到的 cookie 不起作用,我已经在 Postman 中测试过(如果我使用我在 Chrome 中浏览我的 Edx 网站得到的 cookie,它们确实起作用)。这让我想到了一个问题,我的身份验证是否正确,因为当官方应用程序 return 的范围填充了 read write
和其他两个范围时,我没有得到任何范围 returned。
我的身份验证示例 returns:
{
"access_token": "a12345...",
"token_type": "Bearer",
"expires_in": 2591999,
"scope": ""
}
重申;
有没有办法通过 API 请求 HTML 内容(所以 return 在 JSON 请求中编辑)而不是student_view_url
如果不是,那么我如何进行身份验证才能访问 student_view_url
?
所以我想出了如何做第 2 点。
在请求任何 HTML 内容之前,您需要使用您提供给其他端点的身份验证令牌访问端点 {{root}}/oauth2/login/
。这将传回可用的 sessionid
cookie,让您可以访问非 public 的内容(只要用户有权访问)。
顺便说一句,要通过 fetch()
请求传递 cookie,我必须传递选项 credentials: 'include'
。
我正在开发一个 React Native 应用程序,其中所有 Edx 课程信息都需要离线显示。
我已经使用 oauth2 端点(client_id=…&grant_type=password&username=user@example.com&password=p455w0rd
到 {{root}}/oauth2/access_token/
)对应用程序进行了身份验证,并且可以访问 API 端点来让用户注册课程({{root}}/api/enrollment/v1/enrollment
)以及这些课程中的模块 ({{root}}/api/courses/v1/blocks/?course_id={{course_id_url_friendly}}&depth=all&nav_depth=3&return_type=list&username={{username}}
)。我正在努力获取的是 HTML 块的内容。
我在官方应用程序中看到(当通过代理查看请求时)它将请求课程的实际网页,大概是 student_view_url
。
这是获取该内容的唯一方法,还是有一个 API 端点我可以用来 return 内容?
如果唯一的方法是请求呈现的 student_view_url
,我该如何访问该页面?我在官方应用程序中唯一可以判断的方式是它看起来正在传递 cookie 以使用 studen_view_url
进行身份验证,它必须在通过 oauth2 端点授权用户时获得。我得到的 cookie 不起作用,我已经在 Postman 中测试过(如果我使用我在 Chrome 中浏览我的 Edx 网站得到的 cookie,它们确实起作用)。这让我想到了一个问题,我的身份验证是否正确,因为当官方应用程序 return 的范围填充了 read write
和其他两个范围时,我没有得到任何范围 returned。
我的身份验证示例 returns:
{
"access_token": "a12345...",
"token_type": "Bearer",
"expires_in": 2591999,
"scope": ""
}
重申;
有没有办法通过 API 请求 HTML 内容(所以 return 在 JSON 请求中编辑)而不是
student_view_url
如果不是,那么我如何进行身份验证才能访问
student_view_url
?
所以我想出了如何做第 2 点。
在请求任何 HTML 内容之前,您需要使用您提供给其他端点的身份验证令牌访问端点 {{root}}/oauth2/login/
。这将传回可用的 sessionid
cookie,让您可以访问非 public 的内容(只要用户有权访问)。
顺便说一句,要通过 fetch()
请求传递 cookie,我必须传递选项 credentials: 'include'
。