OAuth (от «httr») к LinkedIn на сервере Shiny

Я пытаюсь подключиться к API LinkedIn, используя OAuth из библиотеки httr на сервере Shiny. Я запаковал локально работающий пример OAuth из GitHub/hadley/httr, с клиентским интерфейсом Shiny и серверной частью. У меня работает клиентский пользовательский интерфейс.

library(shiny)

shinyUI(pageWithSidebar( 
  sidebarPanel (
  textInput("userEmail", "Your email address:", value =""),
  submitButton("Grant Permission")
  ),
  mainPanel()
))

Но сторона обслуживания не открывает браузер для аутентификации.

library(shiny)
library(httr)

shinyServer(function(input, output) {

  output$GrantPermission <- reactive ({

    linkedin <- oauth_endpoint("requestToken", "authorize", "accessToken", base_url = "https://api.linkedin.com/uas/oauth/")

    myapp <- oauth_app("linkedin", key = "abc", secret = "def")

    token <- oauth1.0_token(linkedin, myapp)

    sig <- sign_oauth1.0(myapp, token$oauth_token, token$oauth_token_secret)

    save.image(paste(input$userEmail, ".RData"))
  })
})

Информация о сеансе: Версия R: 2.15.3 Платформа: x86_64-pc-linux-gnu Пакеты: httr_0.2; блестящий_0.8.0.99.

Любая подсказка о том, что может быть проблемой?


person Hjyah    schedule 14.11.2013    source источник
comment
Вы можете попробовать использовать use_oob в версии для разработчиков, но я не думаю, что поддержка OAuth в httr полностью готова для этого варианта использования.   -  person hadley    schedule 16.11.2013
comment
Спасибо за предложение попробовать версию для разработки и за ваш большой вклад, дорогой Хэдли! Я использовал install_github(httr), который прикрепил httr_0.2.99. Из документации httr use_oob = TRUE доступно только в OAuth 2.0. Однако мне не удалось успешно использовать OAuth 2.0 с LinkedIn.   -  person Hjyah    schedule 23.11.2013
comment
Мы прогрессируем и идем вперед! Использование аргумента use_oob = TRUE в oauth2.0_token предоставило URL-адрес и предложило ввести код авторизации. Однако, когда я попытался открыть URL-адрес в Firefox v25, я получил сообщение об ошибке кодирования содержимого. Укажите в браузере следующий URL-адрес: api.linkedin.com/uas/oauth// Введите код авторизации: Ошибка кодирования содержимого Страница, которую вы пытаетесь просмотреть, не может быть показана, так как она использует недопустимую или неподдерживаемую форму сжатия.   -  person Hjyah    schedule 25.11.2013


Ответы (1)


Думаю, у меня была аналогичная проблема с oAuth и twitteR. Это оказалось проблемой SSL и было решено путем добавления следующего:

require(RCurl) 
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))
person Troy    schedule 15.11.2013
comment
Спасибо, что поделились своим решением, Трой! Хотя код работает правильно локально без сертификата, я попробовал ваше решение на сервере Shiny и добился определенного прогресса, запустив его из консоли RStudio. Он открыл окно браузера для аутентификации — еще раз спасибо! Но после предоставления разрешения он попытался вернуться на сервер к localhost:8787. /Пользовательский/OAuth/. Есть идеи? - person Hjyah; 15.11.2013
comment
Я бы проголосовал за ваш ответ, но он требует 15 очков репутации — у меня только 1. - person Hjyah; 15.11.2013