Как повторно запустить аутентификацию в пакете r meetupr?

#r #meetup

#r #встреча

Вопрос:

Я пытаюсь использовать пакет meetupr из этого репозитория: https://github.com/rladies/meetupr . Согласно ReadMe, токен создается в первый раз при запуске функции meetupr. В моем случае на сервере Meetup возникли проблемы во время использования пакета, из-за чего я не смог войти в систему и сгенерировать токен. Теперь при попытке запустить meetupr я получаю сообщение об ошибке

 Cannot read token from alleged .rds file:
~/.local/share/meetupr/meetupr-token.rds
 

Файл, упомянутый в этом сообщении об ошибке, пуст.

Эта ошибка возникает, например, при запуске:

 library(meetupr)
find_groups(text = "book")
 

ОС: Ubuntu 20.04

R: версия 4.1.2

Браузер: Firefox 94.0

Я уже пытался remove.packages("meetupr") и install.packages("meetupr") снова, но это не помогло.

Как мне повторно запустить функцию аутентификации, чтобы создать токен в этом файле?

Комментарии:

1. Итак, судя по этой конструкции пути, вы, вероятно, работаете на Mac или Linux, но кроме этого мы не можем многое сказать о вашей настройке. В тексте Github говорится, что файлы должны быть сохранены в результате rappdirs::user_data_dir("meetupr", "meetupr") . Вам нужно показать информацию о ваших настройках и полный вывод вашего кода и результатов на консоль.

2. Я добавил информацию о своей операционной системе и версии R. Полный вывод — это тот, который я указал в первоначальной публикации. rappdirs::user_data_dir("meetupr", "meetupr") просто выдает местоположение каталога, в котором сохранен пакет, то есть ~/.local/share/meetupr/ .

Ответ №1:

Удаление .rds файла, расположенного в папке, которая возвращается следующей командой, должно помочь:

 rappdirs::user_data_dir("meetupr", "meetupr")
 

Если вы ничего не измените, при первом запуске функции meetupr вам будет предложено зайти в ваш браузер, и будет создан токен. Он будет сохранен на диск в каталоге приложения, как определено rappdirs::user_data_dir(«meetupr», «meetupr»)

(Источник: meetupr README)

Итак, я думаю, что произошло то, что, хотя аутентификация не была успешной, файл все еще был создан, но без действительного токена внутри. meetupr считает, что если у вас есть файл, у вас есть действительный токен. Удаление файла должно повторно запустить поток oauth.

Комментарии:

1. Я напрямую удалил всю папку ( ~/.local/share/meetupr/ ), и это сработало, спасибо!

Ответ №2:

Вы не описали подробно, какими были все ваши действия и что говорили вам ваши системные приложения. Я предлагаю пример того, что вы могли бы предложить. Очевидно, что вы бы не опубликовали то же самое, но это должно дать вам пример того, как может выглядеть более полное описание всего процесса:


Я не могу воспроизвести эту ошибку, запустив R 4.0.4 в Ubuntu 18.04 с Chrome в качестве браузера по умолчанию; После установки пакета на его страницу github и запуска этого кода я сначала вижу это сообщение …введите описание изображения здесь

… и после нажатия кнопки разрешить появляется новая страница …

введите описание изображения здесь

И после закрытия этой страницы в соответствии с инструкциями я вижу это на консоли:

 > find_groups(text = "book")
Adding ~/.local/share/meetupr/meetupr-token.rds to .gitignore
Waiting for authentication in browser...
Press Esc/Ctrl   C to abort
Authentication complete.
Downloading 16722 record(s)...
Error in curl::curl_fetch_memory(url, handle = handle) : 
  Operation was aborted by an application callback
 

Я устал ждать, пока загрузится столько записей, нажал escape и побежал:

 `meetupr-token` <- readRDS("/home/david/.local/share/meetupr/meetupr-token.rds")
`meetupr-token`
$`3a1a-munged--7b8e764968950`
<Token>
<oauth_endpoint>
 authorize: https://secure.meetup.com/oauth2/authorize
 access:    https://secure.meetup.com/oauth2/access
<oauth_app> meetup
  key:    2vag-munged-b32tca763m1
  secret: <hidden>
<credentials> access_token, refresh_token, token_type, expires_in
---
 

Таким образом, файл не пуст. Затем я повторно запустил вызов find_groups функции, используя менее широкий поисковый запрос, и получил (без какой-либо всплывающей страницы браузера):

 find_groups(text = "Tai chi")
Downloading 863 record(s)...
# A tibble: 863 × 21
       id name  urlname status   lat     lon city  state country created            
    <int> <chr> <chr>   <chr>  <dbl>   <dbl> <chr> <chr> <chr>   <dttm>             
 1 3.08e7 Beac… Beachs… active  35.2  -83.4  Fran… "NC"  USA     2018-12-24 04:28:57
 2 3.17e7 Tai … Tai-Ch… active  26.2  -80.3  Fort… "FL"  USA     2019-04-25 16:10:30
 3 3.46e7 The … the-ta… active  33.2 -117.   Ocea… "CA"  USA     2021-01-01 01:10:51
 4 8.42e5 The … sifu-t… active  40.9  -73.8  Bron… "NY"  USA     2007-11-26 02:16:11
 5 2.68e7 Yang… Yangsh… active  51.8   -0.83 Ayle… "B9"  United… 2017-12-07 09:00:56
 6 3.40e7 Drag… Dragon… active  41.6  -72.8  Berl… "CT"  USA     2020-08-02 11:18:44
 7 2.68e7 Tai … Tai-Ch… active -33.9   18.5  Cape… ""    South … 2017-12-08 23:39:01
 8 2.39e7 The … The-Sc… active  50.8   -0.15 Brig… "P6"  United… 2017-05-21 14:02:24
 9 2.26e7 Auck… Auckla… active -36.8  175.   Auck… ""    New Ze… 2017-02-26 01:06:20
10 1.87e7 Tai … Larkers active  45.0  -93.2  Minn… "MN"  USA     2015-06-26 16:27:37
# … with 853 more rows, and 11 more variables: members <int>, timezone <chr>,
#   join_mode <chr>, visibility <chr>, who <chr>, location <chr>,
#   organizer_id <int>, organizer_name <chr>, category_id <int>,
#   category_name <chr>, resource <list>
 

Комментарии:

1. Я установил и запустил пакет в первый раз несколько дней назад и не могу воспроизвести, что именно произошло. Я помню, что меня перенаправили в мой браузер, но сервер Meetup не работал (или, по крайней мере, вход в систему не работал). Когда я теперь пытаюсь снова использовать пакет, я получаю сообщение об ошибке. Я не знаю, какую другую важную информацию я могу предоставить вам в своем сообщении. Я просто хочу знать, как снова запустить функцию аутентификации, например, вернув пакет или иным образом. Я попытался удалить и переустановить пакет, но это не помогло.

2. Если бы это случилось со мной, я бы удалил файл rds и каталог и попробовал снова.