RPushullet 不工作:400:错误请求 - 通常这是由于缺少必需参数造成的

RPushullet is not working: 400: Bad Request - Usually this results from missing a required parameter

我一直在使用软件 R 中的 pushbullet(RPushbullet 包)在脚本完成时向我发送消息。它在我的笔记本电脑和 Iphone 上运行良好,但是在工作站上却无法正常工作。以下消息是 returned:

Warning message:
400: Bad Request - Usually this results from missing a required parameter.

我在三个设备上安装了 pushbullet:我的工作站、我的个人笔记本和我的 Iphone。

由此,我观察到一些可能与该问题相关的事情:1) 每次我在我的在线帐户中重新启动会话时,访问令牌都会丢失; 2) 尽管在配置后从我的 .rpushbullet.json 文件中设置了 return 一个有效的密钥消息,但是 API 密钥不能被另一个代码检索到。

我的 R 脚本:

> require(RPushbullet)
> require(jsonlite)

> pbSetup() #Creating my setup to "~/.rpushbullet.json" file
Please enter your API key (aka 'Access Token': "my API key"
[1] "1. iPhone de XXXXX"
[1] "2. XXXXX"
Select a default device (0 for none): 1

> pbValidateConf(conf = "~/.rpushbullet.json")
key is VALID
device XXX is VALID
device XXX is VALID
[1] TRUE

> pbPost("note", "The R Script worked")
Warning message:
400: Bad Request - Usually this results from missing a required parameter.

> pbGetUser(apikey = .getKey())
Error in .getKey() : could not find function ".getKey"

"my API key" 和 XXX 是我在示例代码中省略的有效内容

pbPost("note", "The R Script worked")

此代码足以 post 我的所有设备(使用我的笔记本时),甚至缺少其他参数

显然 pbPost() 对它接收的参数有点挑剔。您需要 至少指定 typetitlebody。如:

pbPost(type="note", title="testTitle", body="testBody")

如果您输入这 3 个参数,它应该可以正常工作。

关于您的第 1) 点和第 2) 点,令牌确实丢失了,您需要强制 RPushbullet 再次读取您的 .json 文件。不过,下一个解决方法对我有用:我没有创建 .json 文件,而是传递了 keydevice id直接到pbPost().

gimme_a_shout_when_finished = TRUE

if (gimme_a_shout_when_finished){
  library(jsonlite)
  library(RPushbullet)
  my_phone_id = "xxx...myphoneid...xxx"
  my_PB_apikey = "xxx...myapikey...xxx"
  pbPost(type = "note", title = "my tile", body = "my body",
         apikey = my_PB_apikey, devices = my_phone_id, verbose = FALSE,
         debug = FALSE)
}

到目前为止,这一直对我有用。关于直接获取apikey……暂无想法

希望这对您有所帮助。