2014-02-03 1 views
5

Я пытаюсь проанализировать некоторые твиты с использованием пакета R и twitteR. Как правило, рукопожатие и регистрационный код работают правильно, и я получаю ссылку авторизации из R. Однако, когда я ввожу PIN-код, полученный от https://api.twitter.com/oauth/authorize, я получаю «Запретную ошибку». Любая помощь приветствуется.twitteR throws Запрещенная ошибка после ввода URL-адреса API-интерфейса Twitter

Кодекс:

TwitterOAuth<-function(){ 
    reqURL <- "https://api.twitter.com/oauth/request_token" 
    accessURL <- "http://api.twitter.com/oauth/access_token" 
    authURL <- "http://api.twitter.com/oauth/authorize" 
    consumerKey <- "xxxxxxxxxxxxxxxx" 
    consumerSecret <- "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
    twitCred <- OAuthFactory$new(consumerKey=consumerKey, 
          consumerSecret=consumerSecret, 
          requestURL=reqURL, 
          accessURL=accessURL, 
          authURL=authURL) 
    options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))) 
    twitCred$handshake() 
    registerTwitterOAuth(twitCred) 
} 

Отклик:

TwitterOAuth() To enable the connection, please direct your web browser to: http://api.twitter.com/oauth/authorize?oauth_token=X0AwET4FXBC7YRIWWN3iF61WFNE1DjxbfibqtfFjgcc
When complete, record the PIN given to you and provide it here: 1998913
Error: Forbidden

Мои sessionInfo()

R версия 3.0.2 (2013-09-25) Платформа: x86_64-w64 -mingw32/x64 (64-разрядный)

местонахождение: [1] LC_COLLATE = Turk ish_Turkey.1254 LC_CTYPE = Turkish_Turkey.1254 LC_MONETARY = Turkish_Turkey.1254 [4] LC_NUMERIC = С = LC_TIME Turkish_Turkey.1254

прикрепленные базовые пакеты: [1] Статистика графики grDevices UTILS наборы данных базовые методы

другой прикрепленный пакеты: [1] twitteR_1.1.7 rjson_0.2.13 ROAuth_0.9.3 digest_0.6.4 RCurl_1.95-4.1 bitops_1.0-6

загружается через пространство имен (а не прилагается): [1] tools_3.0.2

ответ

3

Ba СЭД на этом блоге: http://thinktostart.wordpress.com/2013/05/22/twitter-authentification-with-r/

library(RCurl) 
# Set SSL certs globally 
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))) 

require(twitteR) 
reqURL <- "https://api.twitter.com/oauth/request_token" 

accessURL <- "https://api.twitter.com/oauth/access_token" 

authURL <- "https://api.twitter.com/oauth/authorize" 

consumerKey <- "yourconsumerkey" 

consumerSecret <- "yourconsumersecret" 

twitCred <- OAuthFactory$new(consumerKey=consumerKey,consumerSecret=consumerSecret,requestURL=reqURL,accessURL=accessURL,authURL=authURL) 

twitCred$handshake(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")) 

registerTwitterOAuth(twitCred) 
23

Изменить ваш URL доступа с HTTP к HTTPS.

+0

Это разрешило это для меня. @ user3265306, если вы все еще вокруг, и это работает над вами, отметьте это как ответ. –

+0

Я тоже работал для меня. Спасибо @ Мартин! Пожалуйста, @ user3265306 отметьте это как ответ! – Quantopik

0

У меня был такой же ответ «Ошибка: запрещен», и он не разрешил его сегодня (хотя я и делал это ранее).

Мой R сценарий для моей системы Windows, 8.1 также включает в себя строку:

download.file (URL = "http://curl.haxx.se/ca/cacert.pem", DestFile = "cacert. ПЭМ ")

Я нашел эту линию онлайн с комментарием к нему,„это необходимый шаг для Windows“

Около трех дней назад я успешно достиг Twitter после входа в онлайновый номер PIN, но сегодня я могу «т.

0

Куки-файлы могут быть проблемой: что-то похожее на меня, что было исправлено, когда я следил за ссылкой, указанной twitcred$handshake() в другом браузере; то есть я пытался в Safari, но потом попробовал один раз в Chrome, и PIN-код, который я получил в Chrome, был принят без проблем в R.

6

Вы можете следить за этот шаг (не забывайте, что действительный URL является использование протокола HTTPS):

reqURL <- "https://api.twitter.com/oauth/request_token" 
accessURL <- "https://api.twitter.com/oauth/access_token" 
authURL <- "https://api.twitter.com/oauth/authorize" 
consumerKey <- "Mjn6tdsadsadkasdklad2SV1l" 
consumerSecret <- "58Z7Eldsdfaslkf;asldsaoeorjkfksaVCQtvri" 
twitCred <- OAuthFactory$new(consumerKey=consumerKey, 
          consumerSecret=consumerSecret, 
          requestURL=reqURL, 
          accessURL=accessURL, 
          authURL=authURL) 
twitCred$handshake() 

После выполнения этого кода вы увидите в консоли R сообщении, как это:

To enable the connection, please direct your web browser to: 
https://api.twitter.com/oauth/authorize?oauth_token=scmVODruosvz6Tdsdadadasdsa 
When complete, record the PIN given to you and provide it here: 

Просто вставьте ссылку в свой браузер, затем авторизуйте приложение, в последнем случае вы получите PIN-код, просто скопируйте и вставьте PIN-код в консоль R.

registerTwitterOAuth(twitCred) 

R console покажет TRUE, если вы достигните успеха.

user <- getUser("xxx") 
userTimeline(user, n=20, maxID=NULL, sinceID=NULL, includeRts=FALSE) 
+0

Когда я использую https в url, я получаю «Ошибка в strsplit (response,« & »): несимвольный аргумент' error – StrawhatLuffy