0

我正在尝试做一个简单的 Cron 工作,在 FB 墙上发布新闻。

我面临的问题是 - 需要用户登录。尝试了几种方法但无法通过登录表单(尝试 cURL 但没有成功)。

如果用户登录是手动完成的,他可以发布一条消息,但是我需要一份工作。当我搜索时,我找不到任何人说他们设法从 PHP 发布到 FB 墙上。

所以问题是:是否可以执行 cURL 登录/发布到 FB 墙。如果答案是肯定的,那么很高兴获得一些必须如何完成的想法。

4

2 回答 2

0

您需要使用此处记录的扩展访问令牌。您可以调用如下端点来检索有效期为 60 天的扩展访问令牌。但它仍然需要您在到期后刷新它。/oauth

oauth/access_token?  
grant_type=fb_exchange_token&           
client_id=<YOUR_APP_ID>&
client_secret=<YOUR_APP_SECRET>&
fb_exchange_token=<PRESENT_SHORT_LIVED_ACCESS_TOKEN>

更新:-
您需要首先获得一个短期访问令牌,在从应用程序列表中选择您的应用程序后,您可以从Graph Explorer为您的帐户获取该令牌。如果您想要其他通用用户的短期访问令牌,那么您需要为用户提供一种登录方式,以便您可以获得所需的值。
然后您需要检索扩展访问令牌并将其保存在安全的地方。
然后,对于每个下一步操作,您可以将此访问令牌作为访问令牌的值传递给您的脚本以代表用户发布。

于 2013-03-12T11:16:14.310 回答
-1

您可以使用离线访问权限来执行此操作。

 $loginUrl   = $facebook->getLoginUrl(
        array(
            'scope'=> 'email,publish_stream,user_hometown,user_location,user_photos,friends_photos,
              user_photo_video_tags,friends_photo_video_tags,user_videos,video_upload,friends_videos,offline_access,manage_pages',
            'redirect_uri'  => 'your redirect url'
        )
); 

 $user            =   null;
 $user       = $facebook->getUser();
 if (!$user) {       
    echo '<script> top.location.href="'. $loginUrl .'"; </script>';
 } else {
    $access_token = $facebook->getAccessToken();
  }

/* 通过用户 ID 将此访问令牌存储到数据库中,您可以使用此访问令牌字母在他们的墙上发布 */

延长现有短寿命用户 access_tokens 的有效期 ... 目前长寿命用户 access_token 的有效期为 60 天,而短寿命用户 access_tokens 目前的有效期为 1 到 2 小时。欲了解更多信息,请访问 https://developers.facebook.com/roadmap/offline-access-removal/

于 2013-03-12T10:32:29.837 回答