程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了通过 rfigshare 使用 Figshare API 时出现身份验证错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决通过 rfigshare 使用 Figshare API 时出现身份验证错误?

开发过程中遇到通过 rfigshare 使用 Figshare API 时出现身份验证错误的问题如何解决?下面主要结合日常开发的经验,给出你关于通过 rfigshare 使用 Figshare API 时出现身份验证错误的解决方法建议,希望对你解决通过 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,请注明来意。