R语言rscopus包Scopus作者检索触发HTTP 401授权错误咨询
错误产生原因
核心问题为参数传参错误触发接口异常返回,并非API密钥本身配置失效:
au_id参数要求传入Scopus体系内的唯一数字作者ID(格式类似7403501234),你传入的字符串"Smith"完全不符合该参数的格式要求。searcher参数是用于传入自定义请求发送函数的配置项,不接受检索式字符串,你将作者检索条件错传给该参数,导致最终构造的API请求路径、参数完全不符合Elsevier接口规范,网关直接返回401状态码,和你密钥是否有效无关——这也能解释为什么同密钥下scopus_search可以正常运行。- 小概率情况为API权限未全开:Scopus不同接口的权限是独立勾选的,通用文献检索接口可访问不代表作者检索接口默认开通。
对应解决方法
- 修正
author_search的参数传值逻辑,不要将检索条件传入searcher参数。检索普林斯顿大学姓Smith的作者可参考以下两种正确写法:- 使用结构化参数传值:
author_search(last_name = "Smith", affil = "princeton")- 直接传入完整检索式到
query参数:
author_search(query = "authlast(Smith) and affil(princeton)") - 若修正参数后仍返回401,先运行
getOption("elsevier_api_key")确认当前会话加载的密钥为你的有效密钥,无空值、占位符问题。可同时配置系统环境变量避免会话重置后密钥失效:Sys.setenv(ELSEVIER_API_KEY = "你的实际有效API密钥") - 以上操作无效时,登录Elsevier开发者后台检查已申请的API密钥是否勾选了
Author Search API的访问权限,确认你当前网络环境所属机构已订阅Scopus对应数据库权限。
内容的提问来源于stack exchange,提问作者Faisal Mustafa
相关产品推荐
相关产品推荐

