Desire2Learn Valence API | JSON没有加载

时间:2015-04-22 17:33:03

标签: desire2learn

我使用带有Valence提供的Python SDK的Python Requests库来尝试执行GET请求。网址发生了奇怪的事情,我不确定是什么。我得到的响应是200(这让我相信身份验证正在运行),但是当我尝试从Request对象打印JSON时,它会打印页面的HTML而不是JSON。

我使用的是从http://docs.valence.desire2learn.com/clients/python/auth.html读取的修改后的代码。

这是Python代码:

import requests
import auth as d2lauth
from auth import *

app_creds = { 'app_id': '----', 'app_key': '----' }

ac = d2lauth.fashion_app_context(app_id=app_creds['app_id'], app_key=app_creds['app_key'])

auth_url = ac.create_url_for_authentication('ugatest2.view.usg.edu', 'http://localhost:8080')

redirect_url = "https://localhost:8080?x_a=3----&x_b=3dMRgCBAHXJDTA2E6DJIfdWq-gYl-pk77fF_3X5oDUuqc"

uc = ac.create_user_context(auth_url, 'ugatest2.view.usg.edu', True)

route = 'ugatest2.view.usg.edu/d2l/api/versions/'

url = uc.create_authenticated_url(route)

r = requests.get(url)

print(r.text) 

输出是页面的HTML而不是JSON。如果我打印(r),我的状态为200.我认为我的重定向网址可能是问题,但我不确定究竟是什么问题。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

有两件事让我失望:

  • 使用auth_url创建用户上下文无法正常工作,这是您发送用户所需的网址,以便他们进行身份验证。您需要使用在身份验证后重定向到的URL来构建用户上下文。假设redirect_url是该网址,您应该将其传递给create_user_context而不是auth_url

  • ugatest2.view.usg.edu/d2l/api/versions/不是传递给create_authenticated_route的有效值,/d2l/api/versions可能就是您想要的。 SDK将预先添加方案,域和端口,因此包括传递的值中的那些将导致不正确的URI。

答案 1 :(得分:1)

一旦您的应用正常运行,您就可以使用r.json()而不是r.text来访问JSON响应。