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()
对它接收的参数有点挑剔。您需要 至少指定 type
、title
和 body
。如:
pbPost(type="note", title="testTitle", body="testBody")
如果您输入这 3 个参数,它应该可以正常工作。
关于您的第 1) 点和第 2) 点,令牌确实丢失了,您需要强制 RPushbullet 再次读取您的 .json 文件。不过,下一个解决方法对我有用:我没有创建 .json 文件,而是传递了 key 和 device 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……暂无想法
希望这对您有所帮助。
我一直在使用软件 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()
对它接收的参数有点挑剔。您需要 至少指定 type
、title
和 body
。如:
pbPost(type="note", title="testTitle", body="testBody")
如果您输入这 3 个参数,它应该可以正常工作。
关于您的第 1) 点和第 2) 点,令牌确实丢失了,您需要强制 RPushbullet 再次读取您的 .json 文件。不过,下一个解决方法对我有用:我没有创建 .json 文件,而是传递了 key 和 device 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……暂无想法
希望这对您有所帮助。