如何获得最受欢迎的Facebook发布在R
我想使用下面的代码从Facebook上的页面获得帖子。即使查询在浏览器中输入时出现错误,我也会收到错误。这是我得到的错误:如何获得最受欢迎的Facebook发布在R
WWW-Authenticate: OAuth "Facebook Platform" "invalid_request" "Unknown path components:
任何想法都非常感谢!
# go to 'https://developers.facebook.com/tools/explorer' to get your access token
access_token <- "### token ###"
require(RCurl)
require(rjson)
cafile <- system.file("CurlSSL", "cacert.pem", package = "RCurl")
options(RCurlOptions = list(verbose = TRUE, followlocation = TRUE, timeout = 100, useragent = "R"))
# set the curl options
curl <- getCurlHandle()
options(RCurlOptions = list(capath = system.file("CurlSSL", "cacert.pem",
package = "RCurl"),
ssl.verifypeer = FALSE, verbose = TRUE, cookiejar = 'my_cookies.txt',
cookiefile = 'my_cookies.txt', followlocation = TRUE,
useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3'))
curlSetOpt(.opts = list(proxy = 'proxyserver:port'), curl = curl)
# Facebook json function copied from original (Romain Francois) post
facebook <- function(path = "me", access_token, options){
if(!missing(options)){
options <- sprintf("?%s", paste(names(options), "=", unlist(options), collapse = "&", sep = ""))
} else {
options <- ""
}
data <- getURL(sprintf("https://graph.facebook.com/%s%s&access_token=%s", path, options, access_token))
fromJSON(data)
}
### TED FACEBOOK PAGE
# http://www.facebook.com/TED
# TED's Facebook ID 29092950651 can be found on http://graph.facebook.com/TED
ted <- list()
i<-0
next.path <- "29092950651/posts"
# download all TED posts
while(length(next.path)!=0) {
i<-i+1
ted[[i]] <- facebook(path=next.path , access_token=access_token)
next.path <- sub("https://graph.facebook.com/","",ted[[i]]$paging$'next')
}
ted[[i]] <- NULL
# parse just video links posted by TED
parse.count.ted <- function(x)
if (x$type=="link" & x$from$id=="29092950651") x$likes$count else NA
parse.link.ted <- function(x)
if (x$type=="link" & x$from$id=="29092950651") x$link else NA
ted.counts <- unlist(sapply(ted, parse.master, f=parse.count.ted))
ted.links <- unlist(sapply(ted, parse.master, f=parse.link.ted))
# see three most popular talks
ted.links[order(ted.counts,decreasing=TRUE)][1:3]
这可能是URL格式化的问题。如果未指定options
参数,则生成的URL将如下所示:/me/photos&access_token=...
。在这里,path
应该是/me/photos&access_token
,这可能不是根据Facebook API有效的URL组件。
我觉得到facebook
功能如下变化将解决这个问题:
require(RCurl)
require(rjson)
facebook <- function(path = "me", access_token = token, options){
if(!missing(options)){
options <- sprintf(
"?%s&",
paste(
names(options), "=", unlist(options),
collapse = "&", sep = ""
)
)
} else {
options <- "?"
}
urlTemplate <- "https://graph.facebook.com/%s%saccess_token=%s"
data <- getURL(
sprintf(
urlTemplate,
path,
options,
access_token
)
)
fromJSON(data)
}
现在,即使options
参数丢失,产生的URL看起来像:/me/photos?access_token=...
。
非常感谢!现在我收到以下错误: 错误在myposts [[1]] $ paging $“next”: $操作符对原子向量无效 – Lauren 2013-02-24 19:21:15
我没有看过由'facebook'调用返回的JSON数据,所以我无法对此发表评论。但是,这听起来像是一个单独的问题。你能否在另一个问题上发布JSON数据(和'myposts [[1]]',可能),并接受这个答案,如果它解决了当前的问题? – 2013-02-24 21:39:23
非常感谢!这里是一个单独的问题的链接: http://stackoverflow.com/questions/15069078/parsing-facebook-json-results – Lauren 2013-02-25 14:18:42
您可以将您的问题归结到您的代码中您收到错误的特定位置? – 2013-02-23 23:16:41