Authentication 通过开放式Edx API身份验证或其他方式访问“学生视图url”?

Authentication 通过开放式Edx API身份验证或其他方式访问“学生视图url”?,authentication,cookies,react-native,openedx,Authentication,Cookies,React Native,Openedx,我正在开发一个React本机应用程序,其中所有Edx课程信息都需要脱机显示 我已经使用oauth2端点(client\u id=…&grant\u type=password&username)对应用程序进行了身份验证=user@example.com&password=p455w0rd到{root}/oauth2/access_-token/),并可以访问API端点以获取用户注册的课程({root}/API/registration/v1/registration)和这些课程中的块({root

我正在开发一个React本机应用程序,其中所有Edx课程信息都需要脱机显示

我已经使用oauth2端点(
client\u id=…&grant\u type=password&username)对应用程序进行了身份验证=user@example.com&password=p455w0rd
{root}/oauth2/access_-token/
),并可以访问API端点以获取用户注册的课程(
{root}/API/registration/v1/registration
)和这些课程中的块(
{root}/api/courses/v1/blocks/?course\u id={{course\u id\u url\u-friendly}}&depth=all&nav\u-depth=3&return\u-type=list&username={username}
)。我努力获取的是HTML块的内容

我在官方应用程序(通过代理查看请求时)中看到,它将请求课程的实际网页,大概是
学生视图\u url

这是获取该内容的唯一方法,还是有API端点可用于返回该内容

如果唯一的方法是请求呈现的
student\u view\u url
,我如何访问该页面?在官方应用程序中,我唯一能判断的方法是它似乎正在传递cookies以通过
studen\u view\u url
进行身份验证,当它通过oauth2端点授权用户时,必须获得该url。我得到的cookies不起作用不过,我已经在Postman中测试过(如果我使用从Chrome中浏览Edx站点得到的cookie,它们确实有效)。这就引出了一个问题,我的身份验证是否正确,因为当官方应用程序返回一个包含
读写
和其他两个内容的范围时,我没有返回任何范围

我的身份验证返回的示例:


{
“访问令牌”:“a12345…”,
“令牌类型”:“承载者”,
“到期日”:2591999,
“范围”:”
}

重申

  • 有没有办法通过API(在JSON请求中返回)而不是
    student\u view\u url来请求HTML内容

  • 如果没有,那么如何通过身份验证访问
    学生视图\u url


  • 所以我想出了如何做第2点

    在请求任何HTML内容之前,您需要使用您提供给其他端点的身份验证令牌点击端点
    {{root}/oauth2/login/
    。这将传回一个可用的
    sessionid
    cookie,该cookie将允许您访问非公共内容(只要用户有访问权)

    另外,要通过
    fetch()
    请求传递cookie,我必须传递选项
    credentials:'include'