微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在全球环境中存储 TD Ameritrade API 访问令牌 - R

如何解决如何在全球环境中存储 TD Ameritrade API 访问令牌 - R

我正在使用 rameriTrade生成 API refresh tokenaccess token我有两个单独的 Rscripts 生成 refresh tokenaccess tokenrefresh token 的有效期为 90 天,access token 的有效期为 30 分钟。我的目标是通过包 Windows Scheduled Task 设置一个 taskscheduleR。我已经成功做到了,access token Rscript 每 30 分钟按我的预期持续时间运行。这是通过 cmd 行运行并使用 Rscript.exe 在没有任何图形界面的情况下运行。

rameriTrade 包通过 access token 创建一个 oAuth2,其中 access token 存储在选项中。

"认情况下,访问令牌存储在选项中 并且会自动传递给下游函数"

使用 .log 创建的 taskscheduleR 文件表明我创建新 access token函数成功。

我不确定如何在不透露特定 API reprex 信息的情况下生成 consumer_key,因此这是我的工作流程的代码

Rscript 来执行新的 access token 代。

consumer_key <- "key specific to created app"

refresh_token <- readRDS("~/refresh_token.rds")

new_access_token <- function(){
        rameriTrade::td_auth_accesstoken(consumerKey = consumer_key,refreshToken = refresh_token)
}
        
new_access_token()
options("td_access_token" = access_token)

这是日志打印的内容

[1] "Successful Login. Access Token has been stored and will be valid for 30 minutes"
$access_token
[1] "very long alphanumeric string (personal)"

$scope
[1] "PlaceTrades AccountAccess MoveMoney"

$expires_in
[1] 1800

$token_type
[1] "Bearer"

$expireTime
[1] "2021-05-12 12:29:58 EDT"

$createTime
[1] "2021-05-12 12:00:03 EDT"

我的问题是,无需使用 save/readRDSaccess token 保存到我必须调用才能使用 access token 的目标文件中,有没有办法我让这段代码将新生成access token 保存在全局 R 环境中,因此在运行 td_accountData()函数时,我不必编写代码调用 access token 来验证 API 调用?

我希望能够在我的 R 环境中使用自动刷新 access token。 任何见解都会让我的生活更轻松,我是 R 的新手,所以不知道我拥有的所有选择。使用 .Renviron 解决问题

编辑: 我在 CRON 作业中添加了一行代码 options("td_access_token" = new_access_token()),如果我手动运行此脚本,td_access_token 中的 options 将更新为当前的 access_token,尽管作业自动运行时不会发生这种情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。