首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于twitteR的ROAuth代理认证

基于twitteR的ROAuth代理认证
EN

Stack Overflow用户
提问于 2013-11-26 05:08:14
回答 3查看 2.6K关注 0票数 1

我正在尝试使用来自RStudio的RStudio包。

但是,我得到了一个错误:

“'Proxy身份验证是必需的”,有时-“找不到主机”。

有许多线程都有相同的问题。

我什么都试过(--internet2,R by setting "~/Rgui.exe" http_proxy=http:/999.99.99.99:8080/ http_proxy_user=ask)。但没起作用。

找到我下面的代码(我正在从我的办公桌面RStudio运行),它需要身份验证:proxyuserpwd="**domain//username:pwd**"

这句话我不太清楚。我试过各种组合,但都没有用。

代码语言:javascript
复制
rm(list=ls())
library(twitteR)
library(ROAuth)
library(RCurl)

options(RCurlOptions = list(
  verbose = TRUE,
  proxy ="http://proxy1.domain.com:8080",
  proxyuserpwd="domain//username:pwd",
  proxyauth="ntlm"))

reqURL <- "http://api.twitter.com/oauth/request_token"
accessURL <- "http://api.twitter.com/oauth/access_token"
authURL <- "http://api.twitter.com/oauth/authorize"
consumerKey <- '.............'
consumerSecret <- '..........'
twitCred <- OAuthFactory$new(consumerKey=consumerKey,
                          consumerSecret=consumerSecret,
                         requestURL=reqURL,
                         accessURL=accessURL,
                         authURL=authURL)

download.file(url="http://curl.haxx.se/ca/cacert.pem",destfile="cacert.pem")
twitCred$handshake(cainfo="cacert.pem")



< Proxy-Authenticate: BASIC realm="Access to this server requires AD Authentication.    Prefix your user ID with domain."
Host: api.twitter.com
Accept: */*
Proxy-Connection: Keep-Alive
Content-Length: 221
Content-Type: application/x-www-form-urlencoded

Error: Proxy Authentication Required
> registerTwitterOAuth(twitCred)
< HTTP/1.1 407 Proxy Authentication Required
* Authentication problem. Ignoring this.
< Proxy-Authenticate: NTLM
< Cache-Control: no-cache
< Pragma: no-cache
< Content-Type: text/html; charset=utf-8
* HTTP/1.1 proxy connection set close!
< Proxy-Connection: close
< Set-Cookie: BCSI-CS-3bf0ea03406bba28=2; Path=/
< Connection: close
< Content-Length: 899
< 
* Closing connection #0
Error in registerTwitterOAuth(twitCred) : 
oauth has not completed its handshake

但是,当我尝试使用下面的代码时。

代码语言:javascript
复制
library("RCurl")
opts <- list(
proxy         = "proxy1.domain.com", 
proxyusername = "domain", 
proxypassword = "pwd",
proxyport     = 8080
)
getURL("http://stackoverflow.com", .opts = opts)

...I是成功的。

代码语言:javascript
复制
>sessionInfo()  
R version 2.15.1 (2012-06-22)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] twitteR_1.1.7  rjson_0.2.13   ROAuth_0.9.3   digest_0.6.3   RCurl_1.95-4.1    bitops_1.0-5  

loaded via a namespace (and not attached):
[1] tools_2.15.1

我从这里尝试了多个线程解决方案,它们的解决方案都不起作用。我不知道我在哪里犯了这个错误。(这是我需要和用户名一起使用的领域,困扰我),有人能在这个问题上有所了解吗?

更新:

当我在http_proxy=http:/999.99.99.99:8080/http_proxy_user=ask),中运行相同的代码(设置"~/Rgui.exe“)时,它提示输入用户名和密码来下载cacert.pem。

但当我试图握手时,它会抛出同样的错误:

错误:需要代理身份验证。

更新:

我得到了以下错误:

Error in function (type, msg, asError = TRUE) : Received HTTP code 407 from proxy after CONNECT

按照托马斯的建议更新-尝试过

代码语言:javascript
复制
reqURL <- "https://api.twitter.com/oauth/request_token"
accessURL <- "https://api.twitter.com/oauth/access_token"
authURL <- "http://api.twitter.com/oauth/authorize"
consumerKey <- '-----'
consumerSecret <- '-------'
twitCred <- OAuthFactory$new(consumerKey=consumerKey,
                         consumerSecret=consumerSecret,
                         requestURL=reqURL,
                         accessURL=accessURL,
                         authURL=authURL)

h <- getCurlHandle(
proxy         = "proxy1.domain.com", 
proxyusername = "username",  #but i have to always prefix my domain with username(Domain\username or domain\\username or domain//username)
proxypassword = "password",
proxyport     = 8080,
cainfo = "cacert.pem")
twitCred$handshake(curl=h)

我得到了以下错误

Error in strsplit(response, "&") : non-character argument

我正在用跟踪返回输出更新链接。

5: strsplit(response, "&")

4: lapply(X = X, FUN = FUN, ...)

3: sapply(strsplit(response, "&")[[1]], strsplit, "=")

2: parseResponse(resp)

1: twitCred$handshake(curl = h)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-29 07:16:38

我真的不知道代理服务器的任何情况,但是为什么不为您的握手行(显式地指定curl句柄)尝试这样做:

代码语言:javascript
复制
h <- getCurlHandle(
      proxy         = "proxy1.domain.com", 
      proxyusername = "domain", 
      proxypassword = "pwd",
      proxyport     = 8080,
      cainfo = "cacert.pem")
twitCred$handshake(curl=h)
票数 1
EN

Stack Overflow用户

发布于 2013-11-29 09:15:21

谢谢托马斯,谢谢你的帮助-我解决了问题。

代码语言:javascript
复制
rm(list=ls())
library(twitteR)
library(ROAuth)
library(RCurl)

reqURL <- "http://api.twitter.com/oauth/request_token"
accessURL <- "http://api.twitter.com/oauth/access_token"
authURL <- "http://api.twitter.com/oauth/authorize"
consumerKey <- '-----'
consumerSecret <- '------'
twitCred <- OAuthFactory$new(consumerKey=consumerKey,
                          consumerSecret=consumerSecret,
                         requestURL=reqURL,
                         accessURL=accessURL,
                         authURL=authURL)

h <- getCurlHandle(
proxy         = "proxy1.domain.com", 
 proxyusername = "username", 
proxypassword = "pwd",
proxyport     = 8080,     cainfo = "cacert.pem")

twitCred$handshake(curl=h)

To enable the connection, please direct your web browser to:

http://api.twitter.com/oauth/authorize?oauth_token=6VJ4mdc71BxVtgbI6YT0eNHqFCGe41f28MjiHl2KSvs When complete, record the PIN given to you and provide it here:

我已将https替换为http。

票数 2
EN

Stack Overflow用户

发布于 2015-10-15 17:45:17

我还在代理服务器后面工作,并且能够使用下面的代码访问twitter。

代码语言:javascript
复制
consumer_key <- '<put your consumer key here>'
consumer_secret <- '<put your consumer secret here>'
access_token <- "<put your access token here>"
access_secret <- "<put your access token secret here>"
set_config(use_proxy(url='proxy- address',port-number, username, password))
setup_twitter_oauth(consumer_key,consumer_secret, access_token , access_secret)

还能获取推文。为了解决这个问题,我还写了一个循序渐进的博客。您可以从http://analyticsinall.blogspot.in/search/label/Analytics%20for%20Business访问它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20208965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档