【问题标题】:Facebook cron jobFacebook cron 任务
【发布时间】:2013-02-26 14:08:48
【问题描述】:

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

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

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

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

【问题讨论】:

  • 使用 oauth 并保存密钥以便使用 API 怎么样?
  • 不适合我。您是否尝试过 inversivemedia 并且它对您有用?尝试了约 5 例,但没有任何内容可以自动发布帖子(需要用户登录)
  • 这是一个入门指南:developers.facebook.com/docs/howtos/login/getting-started 它归结为:创建一个应用程序(非常简单),从用户那里获得在他的墙上发帖的授权,保存访问令牌并使用此令牌来通过 api 发布(例如:developers.facebook.com/docs/technical-guides/opengraph/…
  • 试过这个。但是出现以下错误:用户尚未授权应用程序执行此操作
  • 以该用户身份手动登录,授权应用并使用令牌。

标签: php facebook facebook-graph-api


【解决方案1】:

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

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 为您的帐户获取该令牌。如果您想要其他通用用户的短期访问令牌,那么您需要为用户提供一种登录方式,以便您可以获得所需的值。
然后您需要检索 扩展访问令牌 并将其保存在安全的地方。
然后对于接下来的每个操作,您可以将此访问令牌作为访问令牌的值传递给您的脚本以代表用户发布。

【讨论】:

  • { "error": { "message": "No user access token specified", "type": "OAuthException", "code": 1 } }
  • 您首先需要对应用进行授权,以便您可以检索您要在其墙上发布的用户的&lt;PRESENT_SHORT_LIVED_ACCESS_TOKEN&gt;
  • 是群墙。如果我使用 php 脚本,用户首先手动登录,然后可以发布到墙上,我尝试使用的用户可以发布所有这些信息。
  • @SauliusS 查看我上面的更新,如果您遇到任何问题,请回复
  • 授权@Anvesh Saxena 是什么意思?用户可以访问我的应用程序,如果我在没有令牌的情况下手动操作,但首先使用此用户登录,然后我可以轻松发布到 fb 墙(登录部分不能在 cron 中,因此这样会失败)
【解决方案2】:

您可以通过使用离线访问权限来做到这一点。

 $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/

【讨论】:

  • offline_access 不再可用。
  • 所以如果有人有这样的脚本,如果你能亲自联系我会很有趣(因为我没有看到任何新的答案)
  • 这个网站 (hootsuite.com) 与我的预期非常相似(关于发布新闻)
猜你喜欢
  • 1970-01-01
  • 2011-05-20
  • 2011-05-28
  • 1970-01-01
  • 2015-01-08
  • 1970-01-01
  • 2011-12-03
  • 2019-06-05
  • 2018-03-23
相关资源
最近更新 更多