MacBook上R语言rscopus包Invalid API key错误排查求助
问题:rscopus调用Scopus API始终返回Invalid API Key错误
已获取Scopus API密钥和机构令牌,在Elsevier开发者平台可正常使用,但在Mac的R环境中调用rscopus包时持续遭遇Invalid API Key认证错误。相关代码及报错信息如下:
运行代码
library(rscopus) set_api_key(MY_KEY) hdr=inst_token_header(MY_TOKEN) key=get_api_key() print(rscopus::get_api_key(), reveal=TRUE) have_api_key() auth_info = process_author_name(last_name="Muschelli", first_name="John", verbose=FALSE)
核心报错
> auth_info = process_author_name(last_name="Muschelli", first_name="John", verbose=FALSE) $`service-error` $`service-error`$status $`service-error`$status$statusCode [1] "AUTHENTICATION_ERROR" $`service-error`$status$statusText [1] "Invalid API Key: valid apikey credentials required." Error in get_complete_author_info(...) : Service Error
已尝试的操作:
- 单独调用
elsevier_authenticate(api_key=key)返回HTTP 403 Forbidden - 用
auth_token_header(MY_TOKEN)替代inst_token_header(MY_TOKEN)无效 - 在终端设置环境变量
export Elsevier_API=MY_KEY并写入~/.bash_profile,无效
解决方案
1. 修正API密钥的引用方式
确保代码中用字符串包裹实际密钥(比如set_api_key("你的真实API密钥")),避免因变量未解析导致密钥传递错误。
2. 同时传递API密钥和机构令牌到请求头
rscopus需要同时携带API密钥和机构令牌完成认证,修改代码将两者合并到请求头:
library(rscopus) # 替换为你的真实密钥和令牌 api_key <- "YOUR_REAL_API_KEY" inst_token <- "YOUR_REAL_INST_TOKEN" # 合并认证请求头 headers <- c(inst_token_header(inst_token), api_key_header(api_key)) # 验证认证状态 auth <- elsevier_authenticate(api_key = api_key, headers = headers) # 调用接口时传入合并后的请求头 auth_info <- process_author_name(last_name="Muschelli", first_name="John", verbose=FALSE, headers = headers)
3. 正确设置Mac环境变量
若Mac使用zsh(默认Shell),环境变量需写入~/.zshrc而非~/.bash_profile:
echo 'export Elsevier_API="你的真实API密钥"' >> ~/.zshrc echo 'export Elsevier_INSTTOKEN="你的真实机构令牌"' >> ~/.zshrc source ~/.zshrc
重启R会话后,rscopus会自动读取环境变量,无需手动调用set_api_key:
library(rscopus) # 直接调用接口即可 auth_info <- process_author_name(last_name="Muschelli", first_name="John", verbose=FALSE)
4. 验证API密钥权限范围
登录Elsevier开发者后台,确认你的API密钥已启用Scopus相关权限(如Author Search接口),部分密钥可能仅开放特定接口访问权限。
5. 排查网络代理影响
若Mac使用了代理,可能导致R无法正常请求Elsevier服务器,可临时关闭代理后重试,或在R中配置代理:
Sys.setenv(HTTPS_PROXY="http://你的代理地址:端口号")
内容的提问来源于stack exchange,提问作者Anisha Garg
相关产品推荐
相关产品推荐

