You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 03:45:52