我正在编写一个名为 rCharts 的 R 包,它允许用户从 R 创建、自定义和发布 JS 图表。发布的选项之一是 gist.github.com。
我已经使用 Github 的 v3 API 实现了基本身份验证,该 API 使用用户名和密码来获取令牌,然后使用该令牌创建一个 gist。
现在,我想在第一次生成令牌时存储令牌,以便 (a) 不会每次都提示用户输入用户名和密码,以及 (b) 通过每次生成新令牌来防止令牌扩散。
我想到了几个可以存储令牌的位置。
- rCharts 包目录。
~/.rCharts
.rProfile
我正在尝试思考每种方法的优缺点。我喜欢使用.rProfile
,但是如果用户从不同的目录打开 R 怎么办。
如果有人可以帮助我了解什么是最佳解决方案,我将不胜感激。
更新。感谢@hadley,我发现我实际上使用的是 OAuth 而不是基本授权。使用基本授权,发布要点真的很容易。这是我的代码。我相信,检索用户名和密码最安全的方法是使用options
. 由于 Github API 最近发生了一些变化,因此需要用户代理字符串。
require(httr)
POST(
url = 'https://api.github.com/gists',
config = c(
authenticate('username', 'password', type = 'basic'),
add_headers("User-Agent" = "Dummy")
),
body = body
)