【问题标题】:Access Pushbullet API to delete pushes using R访问 Pushbullet API 以使用 R 删除推送
【发布时间】:2017-01-30 10:04:54
【问题描述】:

我正在使用RPushbullet 包从 R 向多个设备(智能手机)发送推送通知。这非常好。

现在:在每条新推送消息之前,我想删除之前的推送。我想通过访问 Pushsbullet 的 API 来做到这一点。可以在here 找到相应的 Pushbullet 文档(在左侧导航栏中转到“Push”->“delete-push”),但我也将其发布在下面:

我尝试使用 R 的 httrRCurlCurl 包中的任何一个来实现这一点,但我没有成功。例如,我尝试了以下代码的各种更改:

library(httr)
r <- GET("https://api.pushbullet.com/v2/pushes/{device_ID}", 
      add_headers('Access-Token: x.X1XxXxXx1xxxX1xxxxxxXX1XxXXxXx1x'))

library(RCurl)
library(RJSONIO)
postForm("https://api.pushbullet.com/v2/pushes/{device_ID}",
     .opts = list(httpheader = c(Authorization = 'x.X1XxXxXx1xxxX1xxxxxxXX1XxXXxXx1x', Accept = 'application/json')))

但我总是收到类似“访问令牌丢失或无效”的回复,例如:

Response [https://api.pushbullet.com/v2/pushes/{device_ID}]
  Date: 2017-01-30 09:44
  Status: 401
  Content-Type: application/json; charset=utf-8
  Size: 176 B

状态码401 表示“未授权”,即我无法将访问令牌传递给表单。

任何有关如何在 R 中访问此 Pushbullet API 的帮助将不胜感激。

编辑:

操作系统: Windows 10 家庭版,64 位

卷曲命令: curl --header 'Access-Token: x.X1XxXxXx1xxxX1xxxxxxXX1XxXXxXx1x' https://api.pushbullet.com/v2/users/me

卷曲输出: curl: (6) Could not resolve host: x.X1XxXxXx1xxxX1xxxxxxXX1XxXXxXx1x' {"error":{"code":"invalid_access_token","type":"invalid_request","message":"Access token is missing or invalid.","cat":"(=^´¢Ñ¤ë´¢Ñ^)y´╝Ø"},"error_code":"invalid_access_token"}

【问题讨论】:

  • 你能把你使用的 curl 命令和你的操作系统贴出来吗?

标签: r api rcurl httr pushbullet


【解决方案1】:

当您在 Windows 上时,请确保使用双引号而不是单引号("..." 而不是 '...')。同样在您的示例中,您提交了{device_ID},但通过查看API,您可能应该指定要删除的push_ID

【讨论】:

  • 天才!这正是错误所在!我将 curl 命令 更改如下:curl --header "Access-Token: x.X1XxXxXx1xxxX1xxxxxxXX1XxXXxXx1x" https://api.pushbullet.com/v2/users/meR 代码 为:GET("https://api.pushbullet.com/v2/pushes", add_headers("Access-Token" = "x.X1XxXxXx1xxxX1xxxxxxXX1XxXXxXx1x"), query = list(active = "true")),以获取所有 {push_ID} 的列表。 并删除推送: DELETE(https://api.pushbullet.com/v2/pushes/{push_ID}, add_headers("Access-Token" = "x.X1XxXxXx1xxxX1xxxxxxXX1XxXXxXx1x"))
【解决方案2】:

您在代码中使用“授权”,但 API 需要“访问令牌”。

【讨论】:

  • 我也尝试了“Access-Token”(与示例建议的方式完全相同),但它也不起作用。我相应地更新了我的示例。
  • 你是否也修改了第二条命令? postForm("api.pushbullet.com/v2/pushes{device_ID}", .opts = list(httpheader = c(Access-Token = 'x.X1XxXxXx1xxxX1xxxxxxXX1XxXXxXx1x', Accept = 'application/json')))
  • 是的,我做到了。我尝试了无数种变化。我总是得到相同的响应(见上文)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多