api授权headerr httr

api authorization header r httr

我正在尝试使用 httr 访问 Open Apparel Registry api。

注意:注册是免费的(需要登录+在个人资料页面获取验证码)。 但是你可以在这里看到 swagger api 文档:https://openapparel.org/api/docs/#!/facilities/facilities_list

网页版授权方式如下:

oar_root_api <- "https://openapparel.org/api/facilities/"
oar_token <- XXX
oar_api_facilities_GET <- httr::GET(url = oar_root_api,
                                    add_headers(
                                                `Authorization` = oar_token),
                                    verbose()
                                    )

我收到的代码是 401 所以我的授权有问题,但我已经尝试了很多方法。我不知道如何正确指定它。

得知您遇到了困难,我们深感抱歉。此附加文档可能会有所帮助:https://docs.google.com/document/d/1ZKCN84Eu9WDAXUokojOw7Dcg5TAJw0vKnVk7RPrTPZ0/edit?usp=sharing

我们发现用户需要添加“令牌”前缀(参见第 3 页),我认为这不是标准做法 - 这是我们打算改变的!

告诉我们你的进展情况。

Open Apparel Registry (OAR) 使用 Django REST Framework to provide API enpoints. The TokenAuthentication class requires that the Authorization header value have a "Token " prefix. From the documentation

For clients to authenticate, the token key should be included in the Authorization HTTP header. The key should be prefixed by the string literal "Token", with whitespace separating the two strings. For example:

Authorization: Token 9944b09.....

我不熟悉 R,但我搜索了字符串连接,看起来 paste 函数将构建您需要的 header 值。

oar_root_api <- "https://openapparel.org/api/facilities/"
oar_token <- XXX
oar_api_facilities_GET <- httr::GET(url = oar_root_api,
                                    add_headers(
                                                `Authorization` = paste("Token ", oar_token)),
                                    verbose()
                                    )