尝试创建Quizlet集时权限不足

时间:2014-09-15 04:56:34

标签: python python-2.7

我正在尝试使用此处的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错误?

2 个答案:

答案 0 :(得分:1)

好的,所以3年半以后(!!)我再次调查了这个,这是我发现的。

add a set你需要一个访问令牌 - 这与client_id(我在代码中称之为quizkey)不同,并且说实话我不记得{{1} 1}}在我的代码中是。

此令牌是通过user authentication flow获得的。总结一下:

  • authcode发送POST请求,如下所示:
    • https://quizlet.com/authorize
    • 将response_type保持为https://quizlet.com/authorize?response_type=code&client_id=MY_CLIENT_ID&scope=read&state=RANDOM_STRING,将code替换为您的client_id,将范围保持为client_id,状态可以是任何内容
    • 我认为这需要人工干预,因为您真的要授权自己的帐户?不确定另一种方式......
  • 您将收到带有代码的回复
    • 现在让我们调用此RESPONSE_CODE
  • read发送POST请求,指定4个必填参数:
    • https://api.quizlet.com/oauth/token(这永远不会改变)
    • grant_type="authorization_code"
    • code=RESPONSE_CODE(可以找到at your personal API dashboard
    • 客户端ID和秘密令牌用冒号分隔,然后用base64编码(上面的用户身份验证流程链接告诉你如果你不想做任何编码,这是什么)
  • 您将从此API调用
  • 收到redirect_uri=https://yourredirecturi.com

现在,您可以在通话中使用access_token来创建一个类似我上面所做的集合(只需将access_token替换为"client_id":quizkey

答案 1 :(得分:0)

您需要进行身份验证才能制作套装。此链接提供了概述:

https://quizlet.com/api/2.0/docs/making_api_calls

这个提供了有关身份验证过程的详细信息:

https://quizlet.com/api/2.0/docs/authorization_code_flow