Publicera till Facebook med Facebook Graph API

I förra veckan släppte Facebook sitt nya API, Facebook Graph. Meningen med det nya APIet är att man ska förenkla hela sättet att arbeta med med data mot Facebook.

En av de större nyheterna i detta API är övergången ifrån det egenutvecklade “Facebook Connect” till det mer igenkända protokollet OAuth 2. Hur detta implementeras tänker jag inte gå igenom här eftersom det finns väldigt bra exempelkoder på det när man laddar ner det nya API-biblioteket.

Så idag satte jag mig för att byta ut det gamla APIet emot det nya, och tänkte därmed förklara hur man publicerar på användarens vägg med hjälp av det nya APIet.

Notera: innan du kan börja använda följande kod måste du registrera en applikation på Facebook och ladda ner api-biblioteket ifrån Github där du även får med exempelkoder på hur du använder facebook för inloggning, med hjälp av OAuth 2.

<?php
// Inkludera facebook-biblioteket
include_once ("API/facebook.php");

class FacebookHandler {
	private $_facebook;

	public function __construct() {

		// Ett nytt facebook-objekt måste initieras.
		// Här använder du applikationsID och API-secret som du fick när du registrerade applikationen
		$this->_facebook = new Facebook(Array (
			'appId'  => FACEBOOK_APP_ID,
			'secret' => FACEBOOK_API_SECRET,
			'cookie' => true // Tillåt facebook att skapa cookies på din domän
		));

	}

	public function PublishToWall() {

		// Hämta en facebook session
		$session = $this->_facebook->getSession();

		// Kontrollera så att användaren har en facebook-session
		if ($session) {

			$access_token = $session["access_token"]; // Access Token används som en sorts autentisering
			$message = "Will this message show up and let me dominate the world with??";
			$picture = "http://blogg.henriksjodahl.se/wp-content/themes/titan/images/sidebar/sidebox.jpg";
			$link = "http://blogg.henriksjodahl.se/2010/04/publicera-till-facebook-med-facebook-graph-api";
			$name = "Henrik Sjödahl's blogg";
			$description = "Henrik Sjödahl har skrivit ett inlägg om hur man publicerar till sin facebook-feed med hjälp av nya Facebook Graph!";

			// Path, Method, Params
			// Path - Här visar jag att jag vill skriva till den aktiva användarens vägg.
			$result = $this->_facebook->api("/me/feed", "POST", Array(
				'access_token' => $access_token,
				'message' => $message,
				'picture' => $picture,
				'link' => $link,
				'name' => $name,
				'description' => $description
			));

			// Får jag tillbaka ett objekt så har det blivit någotning fel.
			if (is_object($result)) {
				LogModel::LogError("There was an error when posting to Facebook: ". $result);
				return false;
			}

			return true;
		}

		return false;
	}
}

?>

8 Comments

  1. Robin

    Tjena, jag sitter själv och pillar med att uppgradera till det nya API’t och blev väldigt lycklig när jag hittade detta, och väldigt mycket klokare, men får det inte postandet att fungera, någon ide om hur man gör för att requesta tillåtelse att posta? Antar att man fortfarande måste få upp någon form av stremPublish/real Request?

    Mvh Robin

  2. @Robin man måste fråga användaren efter ‘publish_stream’ rättigheter vid inloggning av användaren. Det finns ett inlägg om det: Fråga Efter Rättigheter med Facebook Graph API

  3. Hej,
    Finns det någon app på facebook där man kan mata in sin wordpressfeed-adress och sedan få sina blogginlägg publicerade på sin facebook?

    Vore topp för jag vet inte hur man programmerar själv.

  4. Hej Marie.

    Det finns faktiskt en sådan funktion inbyggd i Facebook. De kallar den för Anteckningar. Du hittar vad du söker efter här: http://www.facebook.com/editnotes.php

  5. Går det att posta till någons wall och bestämma att den personen själv ska vara avsändaren. Även fast det är jag som är det. Eventuellt bestämma att applikationen i sig är avsändaren. Vill inte att det ska stå att jag personligen är avsändaren då budskapet i meddelandena blir fel då.

  6. Hej Peter. Ja det går att publicera på användarens vägg som om det var användaren själv som genomförde publiceringen. Då måste du först få vissa rättigheter från användaren enligt min post fråga efter rättigheter med facebook graph api. Då behöver du även rättigheten “offline_access” utöver “publish_stream” som redan finns angivet i metoden.
    När du har det använder du bara den användarens $access_token (rad 28) istället för din egen.

Trackbacks/Pingbacks

  1. [...] This post was mentioned on Twitter by Henrik Sjödahl. Henrik Sjödahl said: Ny Bloggpost: Publicera till Facebook med Facebook Graph API – http://digs.by/aM4oA2 [...]

  2. [...] Facebook Graph API by Henrik on maj 20th, 2010 För ett tag sedan skrev jag ett inlägg om att Publicera till Facebook med Facebook Graph API. Jag glömde nämna att för att kunna publicera till en användares logg behöver man särskilda [...]

Leave a Reply

You must be logged in to post a comment.