大佬教程收集整理的这篇文章主要介绍了通过 rfigshare 使用 Figshare API 时出现身份验证错误,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
根据 Rfigshare readme:,
您第一次使用 rfigshare 功能时,它会要求您进行在线身份验证。只需登录并单击“确定”即可对 rfigshare 进行身份验证。 R 将允许您缓存您的登录凭据,这样您就不会被要求再次进行身份验证(即使在 R 会话之间),只要您将来使用相同的工作目录。
在新机器上安装 rfigshare 之后(没有现有的 .httr-oauth)
library(devtools)
install_github('ropensci/rfigshare')
library(rfigsharE)
ID = 3761562
fs_browse(ID)
Error in value[[3L]](cond) : requires authentication.
Are your credentials stored in options?
See fs_auth function for details.
因此,尽管自述文件说了些什么,但我不会被要求进行身份验证。
直接调用 fs_auth 也不起作用:
> fs_auth()
Error in init_oauth1.0(self$endpoint,self$app,permission = self$params$permission,:
Bad request (http 400).
我的sessionInfo如下:
sessionInfo()
R version 4.0.5 (2021-03-31)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 10.16
Matrix products: default
BLAS: /library/Frameworks/R.framework/Versions/4.0/resources/lib/libRblas.dylib
LAPACK: /library/Frameworks/R.framework/Versions/4.0/resources/lib/libRlapack.dylib
locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
attached base packages:
[1] stats graphics Grdevices utils datasets methods base
other attached packages:
[1] rfigshare_0.3.7.100
loaded via a namespace (and not attached):
[1] Rcpp_1.0.6 magrittr_2.0.1 tIDySELEct_1.1.0 munsell_0.5.0
[5] colorspace_2.0-1 R6_2.5.0 rlang_0.4.11 fansi_0.5.0
[9] httr_1.4.2 dplyr_1.0.5 grID_4.0.5 gtable_0.3.0
[13] utf8_1.2.1 DBI_1.1.1 ellipsis_0.3.2 assertthat_0.2.1
[17] yaml_2.2.1 tibble_3.1.2 lifecycle_1.0.0 Crayon_1.4.1
[21] rjsonio_1.3-1.4 purrr_0.3.4 ggplot2_3.3.3 later_1.2.0
[25] vctrs_0.3.8 promises_1.2.0.1 glue_1.4.2 compiler_4.0.5
[29] pillar_1.6.1 generics_0.1.0 scales_1.1.1 XML_3.99-0.6
[33] httpuv_1.6.1 pkgconfig_2.0.3
有人有任何提示或解决方法吗?这肯定在 6 个月前我上次尝试时确实有效。我也有一个关于 figshare 支持的关于这个问题的开放线程,但他们对 R 库的了解似乎有限。
(从 Github 交叉发布)
rfigshare
的 master branch 似乎已经超出了 figshare 现在提供的接收器范围,因为 master 分支似乎使用 api 的 v1 以及 oauth v1 身份验证,而 figshare 已经继续使用 v2 api,现在推广使用 oauth v2。
虽然我不确定 figshare 是否关闭了 api 的 v1 和/或禁止了 oauth v1,但如果您从 sckott
branch 安装并使用个人访问权限,您似乎仍然可以使用该软件包令牌(PAT)。
要生成 PAT,请在网络浏览器中导航至 https://figshare.com/account/applications。在此页面的底部,您可以生成 PAT。当令牌出现时,复制它,因为您将无法再次查看它(尽管您可以随时轻松生成@R_801_10062@)。
您需要将此令牌存储在您的 .Renviron
文件中。 usethis
包有一个漂亮的 edit_r_environ()
函数,让这件事变得更容易:
usethis::edit_r_environ()
在 R 中运行上面的代码应该会找到您的 .Renviron
文件并打开它进行编辑。将您的 PAT 存储在新行上。
RFIGSHARE_PAT="the-really-long-pat-you-should-have-on-your-clipbord"
保存并关闭文件。确保重新启动 R 会话以使此更改生效。
然后您可以通过运行来测试以上是否有效:
Sys.getenv("RFIGSHARE_PAT")
查看是否找到了您的 PAT。
然后从 rfigshare
分支安装 sckott
。
remotes::install_github("https://github.com/ropensci/rfigshare/tree/sckott")
现在你应该可以
library(rfigsharE)
fs_browse()
,
我认为其中一个问题是您将 article_id
传递给 fs_browse
,第一个参数不是那个。如果您想浏览一个公共集合,您可以设置 @H_784_9@mine = falSE 和 session = NULL
,例如:
out = fs_details(article_id = 3761562,mine = falSE,session = NULL)
,
您还可以考虑利用当前的 figshare api 与 Open API 兼容这一事实,并使用 swagger 规范即时构建您自己的客户端。
如我在其他答案中所述,生成并存储个人访问令牌。那你就可以了
library(rapiclient)
library(httr)
fs_api <- get_api("https://docs.figshare.com/swagger.json")
header <- c(Authorization = sprintf("token %s",Sys.getenv("RFIGSHARE_PAT")))
fs_api <- list(operations = get_operations(fs_api,header),scheR_98_11845@as = get_scheR_98_11845@as(fs_api))
my_articles <- fs_api$operations$private_articles_list()
content(my_articles)
,
Figshare 支持人员通知我,他们已阻止使用 http://
完成的请求。将请求切换到 https://
似乎解决了 rfigshare 上的一些问题。特别是,fs_details()
和 fs_delete()
在切换到 https://
后起作用。
fs_upload()
即使切换到 https 也会损坏。
以上是大佬教程为你收集整理的通过 rfigshare 使用 Figshare API 时出现身份验证错误全部内容,希望文章能够帮你解决通过 rfigshare 使用 Figshare API 时出现身份验证错误所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。