site/_site/tmp/var/www/chaospott.de/example-hooks/post_fb.php
2014-10-26 19:35:05 +01:00

70 lines
2.6 KiB
PHP

<?php
// Auto-posting requires Facebook's PHP API. It can be found on GitHub.
// https://github.com/facebook/facebook-php-sdk
require_once(dirname(__FILE__) . '/facebook-php-sdk/src/facebook.php');
// Obtaining proper credentials will take a few steps, listed below.
// More here: http://jeremygibbs.com/2012/02/11/how-to-autopost-facebook
//
// 1.) Create Facebook App
// Go to Facebook app page: https://developers.facebook.com/apps
// and click "Create New App" button in top right corner. Choose a
// name (you can leave namespace empty) and continue. Next, you will
// customize the app. Write down App ID and App Secret located in header.
// In basic info section, enter email/domain from which you will be
// posting. Finally, declare how the app integrates with Facebook. You
// will likely want the website option. Enter your site's URL and save.
//
// 2.) Obtain Credentials
// You now must authorize your app to post content on your behalf.
// Normally, once an app is authorized, the user must be logged in to
// verify permissions. You can avoid this by requesting a long-term
// token. To do this, you will create a simple php webpage - grab the
// example here: https://gist.github.com/2114528. Visit the webpage in
// your app, which will forward you to Facebook. You will grant
// permissions and be redirected back to the webpage. That page will
// will display your offline access token. Save this token, and put
// it with your App ID and App Secret. Now you are good to go.
class FacebookCredentials
{
public static $app_id = 'YOUR APP ID';
public static $app_secret = 'YOUR APP SECRET';
public static $access_token = 'YOUR ACCESS TOKEN';
}
function construct_post_text(array $post)
{
$post_txt = $post['post-title'];
$post_url = $post['post-absolute-permalink'];
$post_txt .= ' - ' . $post_url;
if (isset($post['link'])) $post_txt = "\xE2\x86\x92 " . $post_txt;
return $post_txt;
}
function post_facebook_link_to_post(array $post)
{
$post_text = construct_post_text($post);
$facebook = new Facebook(array(
'appId' => FacebookCredentials::$app_id,
'secret' => FacebookCredentials::$app_secret,
'cookie' => true));
$req = array(
'access_token' => FacebookCredentials::$access_token,
'message' => $post_text);
$res = $facebook->api('/me/feed', 'POST', $req);
}
class fb extends Hook
{
public function doHook(Post $post)
{
post_facebook_link_to_post($post->array_for_template());
}
}
?>