Az előző két részben megnéztük, hogyan tudunk kiolvasni adatokat Facebookról, most azt fogjuk kipróbálni, hogyan tudunk küldeni neki.

Mielőtt belemennénk a részletekbe, szeretném kiemelni, hogy a leírás célja nem az, hogy tovább szaporodjanak a jelenleg elég nagy népszerűségnek örvednő, a felhasználó falára oklevelet postoló alkalmazások. Éppen ellenkezőleg. Picit szeretnénk ezek értékét csökkenteni azzal, hogy leírjuk a képfeltöltéshez szükséges folyamatot.
Alapok

Hozzunk létre egy új alkalmazást és adjuk hozzá egy oldalunkhoz. Ehhez a részletes leírás megtalálható a sorozat első részében. Szükségünk lesz a szokásos index.php-re, illetve a Facebook php sdk base_facebook.php és facebook.php állományaira. Hozzunk létre továbbá egy 500x500px-es képet (jpeg, gif vagy png formátumban), ez lesz az oklevelünk, amit a falra postolunk, így a tartalmát ennek megfelelően határozzuk meg.
Az alap kód

A kódunk a második részben bemutatotthoz elég hasonló lesz, azzal a különbséggel, hogy most nem a felhasználó email címéhez kérünk hozzáférési jogosultságot, hanem a falára postoláshoz.

< ?php
ob_start();

require “facebook.php”;

$signed_request = $_REQUEST[“signed_request”];

list($encoded_sig, $payload) = explode(‘.’, $signed_request, 2);

$data = json_decode(base64_decode(strtr($payload, ‘-_’, ‘+/’)), true);

$has_liked = $data[“page”][“liked”];

if($has_liked){

//az adott látogató rajongó -> kérjük el a megfelelő engedélyeket

if(!$data[“user_id”]) {

//még nem engedélyezte -> irányítsuk át az engedélyező képernyőre

$app_id = “0123456789”; //ide kerül a létrehozott alkalmazás ID-ja

$redirect_url = urlencode(“https://www.facebook.com/…”); //ide kerül a tab URL

$scope = “publish_stream”;

$auth_url = “http://www.facebook.com/dialog/oauth?client_id=” . $app_id . “&redirect_uri=” . $redirect_url . “&scope=” . $scope;

echo(““);

} else {

//engedélyezte az alkalmazást

//jelenítsünk meg egy gombot, aminek a segítségével postolhat a falára

}

} else {

//az adott látogató nem rajongó -> kérjük meg, hogy előbb legyen az

?>

Üdvözöllek Idegen! Lépj be rajongóink közé.

< ?php
}

?>

A fenti kód a korábbi részekben ismertetett folyamatokat tartalmaz, kiegészítve a publish_stream (falra posztolás) engedélyének elkérésével.
Kép postolása a falra

Mivel nem szeretnénk, hogy az alkalmazásunk egyből a megnyitásakor képet töltsön fel a felhasználó hírfolyamába, ezt az eseményt egy gomb megnyomásával kötjük össze. A hírfolyamba történő postoláshoz azonban szükségünk lesz egy “kulcsra” (access_token), aminek a lekéréséhez a következő módosításokat kell elvégezni a kódunkban:

$has_liked = $data[“page”][“liked”]; után írjuk be a következő sorokat:

$facebook = new Facebook(array(

‘appId’ => ‘APP ID’, //ide a saját APP ID-t írjuk

‘secret’ => ‘APP SECRET’, //ide a saját APP SECRET-et írjuk

‘cookie’ => true,

‘fileUpload’ => true //képfeltöltéshez szükséges

));

Ha ez kész, a “//jelenítsünk meg egy gombot, aminek a segítségével postolhat a falára”megjegyzés után egészítsük ki a forrást a következő sorokkal:

$access_token = $facebook->getAccessToken();

?>

< ?php Ezt követően térjünk vissza a kódunk elejére és az if($has_liked){ sor elé gépeljük a következőket: if($_POST[‘post_img_to_wall’] && $_POST[‘access_token’]){
$current_access_token = $_POST[‘access_token’];

try {

//kép postolása az adott felhasználó fotói közé

//a meghatározott képaláírással

//az alkalmazás automatikusa létrehoz egy albumot

//ez az album az app neve alapján fog létrejönni

//az így feltöltött kép kerül ki a hírfolyamba

$img = “besocial.jpg”; //a kép, amit fel szeretnénk tölteni a falra, az index.php mellé kerüljön

$caption = “Ez a szöveg a kép alá fog kerülni”;

//kép feltöltése a hírfolyamba

$facebook->api(“/me/photos”, “post”, array(‘message’ =>$caption, ‘source’ => ‘@’.$img, “access_token”=>$current_access_token));

echo “Sikeres küldés”;

} catch (FacebookApiException $e) {

//nem sikerült a küldés

error_log($e);

}

exit();

}

Ebben a részben kezeljük le azt az eseményt, amikor a felhasználó megnyomta a falra postolást elindító gombot, valamint a konkrét képfeltöltési folyamat is itt megy végbe.

A teljes kódunk így fog kinézni:

< ?php
ob_start();

require “facebook.php”;

$signed_request = $_REQUEST[“signed_request”];

list($encoded_sig, $payload) = explode(‘.’, $signed_request, 2);

$data = json_decode(base64_decode(strtr($payload, ‘-_’, ‘+/’)), true);

$has_liked = $data[“page”][“liked”];

$facebook = new Facebook(array(

‘appId’ => ‘APP ID’, //ide a saját APP ID-t írjuk

‘secret’ => ‘APP SECRET’, //ide a saját APP SECRET-et írjuk

‘cookie’ => true,

‘fileUpload’ => true //képfeltöltéshez szükséges

));

if($_POST[‘post_img_to_wall’] && $_POST[‘access_token’]){

$current_access_token = $_POST[‘access_token’];

try {

//kép postolása az adott felhasználó fotói közé

//a meghatározott képaláírással

//az alkalmazás automatikusa létrehoz egy albumot

//ez az album az app neve alapján fog létrejönni

//az így feltöltött kép kerül ki a hírfolyamba

$img = “besocial.jpg”; //a kép, amit fel szeretnénk tölteni a falra, az index.php mellé kerüljön

$caption = “Ez a szöveg a kép alá fog kerülni”;

//kép feltöltése a hírfolyamba

$facebook->api(“/me/photos”, “post”, array(‘message’ =>$caption, ‘source’ => ‘@’.$img, “access_token”=>$current_access_token));

echo “Sikeres küldés”;

} catch (FacebookApiException $e) {

//nem sikerült a küldés

error_log($e);

}

exit();

}

if($has_liked){

//az adott látogató rajongó -> kérjük el a megfelelő engedélyeket

if(!$data[“user_id”]) {

//még nem engedélyezte -> irányítsuk át az engedélyező képernyőre

$app_id = “0123456789”; //ide kerül a létrehozott alkalmazás ID-ja

$redirect_url = urlencode(“https://www.facebook.com/…”); //ide kerül a tab URL

$scope = “publish_stream”;

$auth_url = “http://www.facebook.com/dialog/oauth?client_id=” . $app_id . “&redirect_uri=” . $redirect_url . “&scope=” . $scope;

echo(““);

} else {

//engedélyezte az alkalmazást

//jelenítsünk meg egy gombot, aminek a segítségével postolhat a falára

$access_token = $facebook->getAccessToken();

?>

< ?php
}

} else {

//az adott látogató nem rajongó -> kérjük meg, hogy előbb legyen az

?>

Üdvözöllek Idegen! Lépj be rajongóink közé.

< ?php
}

?>

Mentsük el a módosításokat és frissítsük a fileokat a szerverünkön. Ha mindent jól csináltunk, az alkalmazás engedélyezése közben meg kell jelennie egy második képernyőnek is, ahol a falra postoláshoz adhatunk jogot:

Az engedélyezést követően a tabunkon valami hasonlót kell látnunk:

Amikor ezt megnyomjuk, a tabunk újratöltődik, (ideális esetben) megjelenik a Sikeres küldés felirat és a hírfolyamunkban a feltöltött kép:

Az albumaink között pedig találhatunk egyet, ami az alkalmazásunk nevével (+ Photos) jött létre és a feltöltött képet tartalmazza. Ha újra megnyomjuk a gombot, a következő fotó is ebbe fog bekerülni.

Természetesen egy igazi okleveles alkalmazás ennél többet tud, (felhasználó nevének ráírása a képre, profilkép rámásolása, stb) de ezeknek a funkcióknak a kialakítása inkább php, mint Facebook alkalmazáskészítési ismereteket igényel.

A bejegyzésben használt kódok és oklevél letölthető a következő hivatkozásra kattintva: Saját Facebook alkalmazás – publish_stream

Bízunk benne, hogy sikerrel tudjátok hasznosítani majd a cikksorozatunkban leírtakat. Ha összeraktátok az első oklevélküldő alkalmazásotokat mutassátok meg nekünk is, kíváncsiak vagyunk! És a tudást csak jóra használjátok, ne spam-eljetek!

Ha pedig nem akartok bajlódni a kódolással, kérjetek ajánlatot tőlünk, elkészítjük a saját kvízjátékotokat Nektek! Katt ide!

Pin It on Pinterest

Close