3

我对 Facebook 很陌生(是的,我是唯一一个),但我想使用 Python 以编程方式在墙上发布消息。

我需要做什么才能实现这一目标?我很困惑。我已经看到有关此的大多数问题都集中在如何让应用程序以某种方式与 Facebook 交互,但我想像一个简单的用户一样发布(碰巧“拥有”那个特定 Facebook 页面的用户)。我真的需要去创建一个应用程序吗?(顺便说一句,即使这样我也遇到了问题......它告诉我,即使我通过短信验证了我的帐户,我的帐户似乎也是假的或无效的)。我想有一种更简单的方法,使用POST请求介绍我的凭据,但我还没有读过类似的东西。

我原以为是我需要的,但它会导致创建应用程序的页面。

一些指针?

顺便说一句,我通过 Graph API Explorer 中的 publish_stream 权限获得了一个令牌(使用扩展权限选项卡)。似乎此权限没有到期日期,但不建议这样做。令牌有更好的选择吗?

谢谢

4

2 回答 2

0

Facebook 比它出现的其他网站要复杂一些。

在 Firebug 中查看 NET 下的 POST 选项卡时,在登录时,我看到以下 POST 参数:

charset_test    €,´,€,´,水,Д,Є
default_persistent  1
email   myusername
lgnjs   1340241652
lgnrnd  182050_CuPx
locale  en_US
lsd AVqwALVx
pass    mypassword
persistent  1
timezone    240

我还不知道lsd参数是什么,但我确实通过在登录之前查看登录页面的源代码找到了 lgnrnd 是什么。它似乎使自动化身份验证变得更加困难。

您首先希望您的脚本为该值抓取该登录页面,并将其存储在一个变量中。然后,一个 cURL 示例将类似于:

curl -L "https://www.facebook.com/login.php?login_attempt=1" \
  --cookie-jar /tmp/cookies.txt \
  --data-urlencode "email=myusername" \
  --data-urlencode "lgnrnd=$lgnrnd" \
  --data-urlencode "pass=mypassword"
  and so forth, with all the parameters...

当然,这是未经测试的,我还不知道其中一些参数值是什么,但你应该从中得到想法。您可能可以使用像 Beautiful Soup 这样的 python 模块或其他东西来应用上述基本概念。

然后你会做同样的事情,查看 NET 选项卡以找到当你发布到你的 facebook 墙时发送的参数,并将它们放在一起。

请注意,我使用 curl 的 --cookie-jar 选项存储和使用 cookie。您还需要一种方法来保存和使用请求的 cookie,这就是我展示的原因。

希望对您入门有所帮助..

于 2012-06-21T01:39:20.890 回答
0

那这个呢?。

import urllib2, urllib
parameters = {}
parameters['access_token'] = MY_TOKEN
parameters['message'] = 'Hello world'
target = 'https://graph.facebook.com/MY_ID/feed'

parameters = urllib.urlencode(parameters)
handler = urllib2.urlopen(target, parameters)
while True:
    if handler.code < 400:
        print handler.read() # Gets post_id
        break
    elif handler.code >= 400:
        print 'Error' # :-(
        break

这有问题吗?也许更好的方法?注释?

谢谢

于 2012-06-21T02:21:24.500 回答