Ответ 1
Примечание. Следующие только успешно регистрируют вас в facebook. Я не знаю, почему обновление состояния в конце не работает, но, возможно, оно по-прежнему имеет некоторое значение. Он основан на сообщении в блоге в Baratttalo в марте и который, как я думал, пройдет в пятницу днем.
Я не собирался отвечать на это, но, глядя на некоторые другие ответы и видя, как вы помогли мне в mathoverflow, я подумал, что я сделаю это.
вам нужно будет установить пакеты RCurl и XML из http://www.omegahat.org/ (это довольно классный веб-сайт, чтобы посмотреть даже на забаву я думаю).
В любом случае скопируйте и вставьте это:
library(RCurl)
library(XML)
log.into.facebook <- function(curl, id) {
curlSetOpt( .opts = list(postfields = paste('email=', URLencode(id$login.email), '&pass=', URLencode(id$login.password), '&login=', URLencode('"Login"'), sep=''),
post = TRUE,
header = FALSE,
followlocation = TRUE,
ssl.verifypeer = FALSE,
cookiejar = 'my_cookies.txt',
cookiefile = 'my_cookies.txt',
useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3'), curl = curl)
u <- "https://login.facebook.com/login.php?m&next=http%3A%2F%2Fm.facebook.com%2Fhome.php"
doc <- getURL(u, curl = curl)
return(doc)
}
get.update.stutus.form.id <- function(curl, doc) {
curlSetOpt( .opts = list(post = FALSE), curl = curl)
doc <- getURL("http://m.facebook.com/home.php" , curl = curl)
html <- htmlTreeParse(doc, useInternal = TRUE)
# this gets the post_form_id value
form.id.node <- getNodeSet(html, '//input[@name="post_form_id"]')
form.id <- sapply(form.id.node, function(x) x <- xmlAttrs(x)[[3]])
# we'll also need the exact name of the form processor page
form.num.node <- getNodeSet(html, '//form[@method="post"]')
form.num <- sapply(form.num.node, function(x) x <- xmlAttrs(x)[[1]])
form.num <- strsplit(form.num, "/")[[1]][3]
return(list(form.id = form.id, form.num = form.num))
}
# This function doesn't work. I would love to know why though as it 'looks' right to me
update.status <- function(doc, curl, id) {
form <- get.update.stutus.form.id (curl, doc)
curlSetOpt( .opts = list(post = TRUE,
postfields = paste('post_form_id=', form$form.id, '&status=', URLencode(id$status), '&update=', URLencode('"Update status"'), sep = '')),
curl = curl)
u <- paste("http://m.facebook.com", form$form.num, sep = "/")
doc <- getURL(u, curl = curl)
return(doc)
}
и здесь, как вы используете вышеперечисленные функции (изменяйте значения идентификатора для вашего журнала)
id <- list()
id$status <- "Hello world!"
id$login.email <- "YOUR LOGIN EMAIL"
id$login.password <- "YOUR LOGIN PASSWORD"
# log into facebook, seems to work fine
curl <- getCurlHandle()
doc <- log.into.facebook(curl, id)
# this is the bit that doesn't work, no idea why though.
update.status(doc, curl, id)
Надеюсь, что это поможет немного, может быть, это даст вам представление. Кроме того, я думаю, что вопрос, который вы задали, в порядке, может быть, просто будет немного более конкретным в следующий раз, и, возможно, вы избежите некоторых комментариев, которые вы получили здесь: -)
Тони Брейал
P.S. Я думаю, что все это есть api, но если все, что вас интересует, обновляет статус, мне очень нравится идея использования пакета twitteR и связывания обновлений с facebook.