我正在尝试使用此处的API在Quizlet.com上创建一个集:https://quizlet.com/api/2.0/docs/sets#add
这是我正在尝试创建的一组代码:
import requests
quizkey = my_client_id
authcode = my_secret_code # I'm not sure if I need this or not
data = {"client_id":quizkey, "whitespace":1, "title":"my-api-set",
"lang_terms":"it", "lang_definitions":"en",
"terms":['uno','due'], "definitions":["one","two"]}
apiPrefix = "https://api.quizlet.com/2.0/sets"
r = requests.post(url=apiPrefix, params=data)
print r.text
回复是:
{
"http_code": 401,
"error": "invalid_scope",
"error_title": "Not Allowed",
"error_description": "You do not have sufficient permissions to perform the requested action."
}
我还尝试了"access_token":authcode
而不是"client_id":quizkey
,但这导致了错误:"You do not have sufficient permissions to perform the requested action."
如何解决此问题而不会出现401错误?
答案 0 :(得分:1)
好的,所以3年半以后(!!)我再次调查了这个,这是我发现的。
要add a set你需要一个访问令牌 - 这与client_id(我在代码中称之为quizkey
)不同,并且说实话我不记得{{1} 1}}在我的代码中是。
此令牌是通过user authentication flow获得的。总结一下:
authcode
发送POST请求,如下所示:
https://quizlet.com/authorize
https://quizlet.com/authorize?response_type=code&client_id=MY_CLIENT_ID&scope=read&state=RANDOM_STRING
,将code
替换为您的client_id,将范围保持为client_id
,状态可以是任何内容read
发送POST请求,指定4个必填参数:
https://api.quizlet.com/oauth/token
(这永远不会改变)grant_type="authorization_code"
code=RESPONSE_CODE
(可以找到at your personal API dashboard)redirect_uri=https://yourredirecturi.com
现在,您可以在通话中使用access_token
来创建一个类似我上面所做的集合(只需将access_token
替换为"client_id":quizkey
)
答案 1 :(得分:0)