Как перевести POST-запрос от Почтальона в httr: POST в R - PullRequest
1 голос
/ 10 февраля 2020

Я хочу отправить запрос POST на страницу facebook.com.api.graphql и получить ответ с данными о событиях. Мне удалось отправить POST-запрос на https://www.facebook.com/api/graphql с помощью Почтальона и следующих ключей и значений в форме данных тела:

KEY : VALUE

переменные: {"pageID": "209194109147358", "count": 10}

doc_id: 2455863461165494

Postman Screenshot

Ответ:

{
   "data": {
      "page": {
         "upcoming_events": {
            "edges": [
               {
                  "is_hidden_on_profile_calendar": false,
                  "is_added_to_profile_calendar": false,
                  "node": {
                     "id": "2416302635352362",
                     "startTimestampForDisplay": 1589817600,
                     "time_range": {
                        "start": "2020-05-18T09:00:00-0700"
                     },
                     "timezone": "America/Los_Angeles",
                     "happensOnSingleDay": false,
                     "childEvents": {
                        "count": 0
                     },
                     "is_event_draft": false,
                     "scheduled_publish_timestamp": 0,
                     "shortTimeLabel": "18. maj - 22. maj",
                     "shortDateLabel": "Man. 18. maj",
                     "suggested_event_context_sentence": {
                        "text": "15 g\u00e6ster"
                     },
                     "event_place": {
                        "__typename": "FreeformPlace",
                        "contextual_name": "Minneapolis Convention Center",
                        "id": "2700549666678444"
                     },
                     "is_canceled": false,
                     "imported_source_name": null,
                     "preassigned_discount_note": null,
                     "name": "DrupalCon Minneapolis",
                     "has_child_events": false,
                     "event_buy_ticket_url": null,
                     "can_viewer_purchase_onsite_tickets": false,
                     "event_viewer_capability": {
                        "is_viewer_admin_no_business_permissions": false,
                        "can_viewer_edit": false,
                        "can_viewer_share": false,
                        "can_viewer_create_repeat_event": false,
                        "canViewerWatch": false
                     },
                     "tickets_type": "ONSITE_TICKET",
                     "canViewerJoin": false,
                     "isPast": false,
                     "connectionStyle": "INTERESTED",
                     "eventID": "2416302635352362",
                     "watchStatus": "UNWATCHED",
                     "canJoin": false,
                     "__typename": "Event"
                  },
                  "cursor": "AQHR-CDTanvfocAXPrNpthiQPd38IxkmIM-X8dsCgvNaS-5GgVPPY1r4B2-G4i64oqoR5V7uQ__B-uZKHzTyd8g5wg"
               }
            ],
            "page_info": {
               "has_next_page": false,
               "end_cursor": "AQHRGvYb3Bp1vBnmF4aHTUuT-FsPomUGSber11DP0LlfpANZ4-hclA6lhKINQ6Av31TbDFGi0YWTQSsiU4Clvggu8A"
            }
         },
         "id": "209194109147358",
         "viewer_profile_permissions": [

         ],
         "admin_info": null
      }
   },
   "extensions": {
      "is_final": true,
      "dtsg_token": null
   }
}

Я предпочитаю работать с собранными данными в R, и поэтому хотел бы отправить запрос POST, используя httr: POST () вместо Postman. Моя попытка до сих пор:

url <- "https://www.facebook.com/api/graphql"
params <- list()
params$variables <-  '[{"page_id":"209194109147358", "count":"10"}]'
params$doc_id <- "2455863461165494"
r <- httr::POST(url,body = params, encode = "json")
r

Дает мне следующий ответ (усеченный)

Response [https://www.facebook.com/unsupportedbrowser]
  Date: 2020-02-10 14:31
  Status: 200
  Content-Type: text/html; charset="utf-8"
  Size: 58.4 kB
<!DOCTYPE html>
<html lang="da" id="facebook" class="no_js">
<head><meta charset="utf-8" /><meta name="referrer" content="default" id="meta_referrer" /><script>window._cstart=+new Date();</script><sc...
<link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v3/ym/l/0,cross/h4AfnhSpX0c.css?_nc_x=Ij3Wp8lg5Kz" data-...
<link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v3/yw/l/0,cross/6oJnmlkR2c_.css?_nc_x=Ij3Wp8lg5Kz" data-...
<link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v3/yD/l/0,cross/tI6W6dcWoG6.css?_nc_x=Ij3Wp8lg5Kz" data-...
<script src="https://static.xx.fbcdn.net/rsrc.php/v3/y8/r/6HlB7NWcMJY.js?_nc_x=Ij3Wp8lg5Kz" data-bootloader-hash="J598A"></script>
<script>requireLazy(["gkx"],function(gkx){gkx.add({"676837":{"result":false,"hash":"AT6VREokr3BzfdNj"},"676940":{"result":false,"hash":"AT...
<script>requireLazy(["Bootloader"],function(Bootloader){Bootloader.setResourceMap({"02wPs":{"type":"js","src":"https:\/\/static.xx.fbcdn.n...
<script>requireLazy(["InitialJSLoader"], function(InitialJSLoader) {InitialJSLoader.loadOnDOMContentReady(["SkivO","Gld+B","02wPs","MzCre"...
...

Ответ от в R / httr не совпадает с тем, что я получаю от Почтальона. Неправильно ли я настроил параметры или есть какая-то другая причина, по которой он работает в Postman, но не в R?

Любая помощь очень ценится.

...