0

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

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

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

由此,我观察到一些可能与该问题有关的事情: 1)每次我在我的在线帐户中重新启动会话时,Access Token 都会丢失;2) 虽然安装程序在配置后从我的 .rpushbullet.json 文件中返回了有效的密钥消息,但其他代码无法检索 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"

“我的 API 密钥”和 XXX 是我在示例代码中省略的有效内容

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

此代码足以发布到我的所有设备(使用我的笔记本时),即使缺少其他参数

4

1 回答 1

0

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

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

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

关于您的第 1) 和 2) 点,确实令牌丢失了,您需要强制 RPushbullet 再次读取您的 .json 文件。不过,下一个解决方法对我有用:我不创建 .json 文件,而是将密钥设备 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 ......暂时没有想法。

希望这可以帮助。

于 2017-10-19T11:32:22.833 回答