Facebook PHP SDK + CRON - Születésnaposok

 ( nhw | 2013. szeptember 9., hétfő - 8:08 )

Sziasztok,

hátha valaki otthonabb van FB alakalmazás fejlesztésben (PHP SDK)

Probléma:
Ha beloginolok a webes facebookon és megnyitom a kis alkalmazásomat, akkor szépen kiolvassa (a korábban bekért engedélyekkel) a barátaim születésnapját egy tömbbe.

Array[0] => Array (
[id] => XXXXXXXXX
[first_name] => Gipsz
[last_name] => Jakab
[name] => Gipsz Jakab
[birthday] => 07/07)

Ha ugyanezt a kódot CRON-ban futtatom ezt kapom értékül:
Array[0] => Array (
[id] => XXXXXXXXX
[first_name] => Gipsz
[last_name] => Jakab
[name] => Gipsz Jakab)

Ha ugyanezt a kódot úgy futtatom, hogy közben belépek facebookra, a TAB APP-ra. Akkor mit ad Isten megjelenik a birthday rekord.

Mindeközben ha vagy a TAB APP-ban vagy a CRON JOB-ban lekérem a USER engedélyeit ugyanúgy megvan minden szükséges engedély:
[installed] => 1
[basic_info] => 1
[read_stream] => 1
[status_update] => 1
[photo_upload] => 1
[video_upload] => 1
[email] => 1
[create_note] => 1
[share_item] => 1
[publish_stream] => 1
[publish_actions] => 1
[user_birthday] => 1
[user_friends] => 1
[friends_birthday] => 1
[friends_likes] => 1
[bookmarked] => 1 )

Mi a jó büdös a gondja? Miért csak akkor kapok birthday rekordot ha ténylegesen bejelentkezek a USERREL?

Mindkét esetben az alábbi módon hívom meg az API-t:

$uid = 'BARMI-SQL-OLVASASBOL';
try {
$fbme = $facebook->api('/'.$uid.'/friends/?fields=id,first_name,last_name,name,birthday');
}
catch (FacebookApiException $e) {
echo 'An error occured!';
echo $e;
}

Tehát nem az van hogy api('/me/....) van a PHP-ben. A problémát oda saccolom, hogy amikor CRON-ból hívom meg ott a '/me' != '/user_id'-val, míg TAB PAGE-en igen.

Előre is köszönöm aki fárad a válaszadással...

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Mert a birthday valoszinuleg nem publikus, tehat be kellene jelentkezned OAuth-tal, hogy megkaphasd ezeket a rekordokat. Hiaba nem a /me -n kereszutl ered el, a jogot akkor is meg kell szerezned az adatokra.

De ez csak puszta talalgatas, a facebook API-t konkretan nem ismerem, tobb masik app viszont valami hasonlo modon mukodik.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.

Erre gondoltam én is, de akkor a fenének írja a permissionok között, hogy 1.

„A journey of a thousand miles must begin with a single step.”
// Lao Tzu

Bár én sem fejlesztettem még, csak nézegettem, de szerintem a permission-ok között az "1" csak azt jelzi, hogy általánosságban milyen adatokhoz lehet az alkalmazásnak hozzáférése, a valós hozzáférést viszont az alkalmazást aktuálisan futtató authentikált felhasználó és annak jogosult engedélyei adják meg.
Tehát, ha cron-ból, kvázi bejelentkezés nélkül futtatod az app-ot, az nem fog hozzáférni Kiss Pista ismerőseinek születésnapjához azért, mert az 1x jóváhagyta az app-od hozzáférését.

Én egy ilyen címről kapom őket:
http://www.facebook.com/ical/b.php?uid=...&key=...
Nem tudom neked megfelelne e. :)


sly @ w3m.hu

Ahha...
A key az lényegében az "APP TOKEN" amint az alábbi módon képzed?

$token_url = "https://graph.facebook.com/oauth/access_token?" .
"client_id=" . $config['appId'] .
"&client_secret=" . $config['secret'] .
"&grant_type=client_credentials";

Tekintettel rá, hogy SignedRequest->AccessTokened itt nincs, mivel nem vagyunk TAB Canvasban. :S

„A journey of a thousand miles must begin with a single step.”
// Lao Tzu

Események, exportálás menüpont alatt vannak az ical URL-ek. Nem hiszem, hogy app függő a kulcs, mert nem kell hozzá app, inkább ember függő. Mivel a Facebook out-of-the-box nem tud szinkronizálni Androidon, ezt használom, és teljesen jó. BTW, de jó lenne, ha szinkronizálna...

--

Mire használod? Szülinap szinkronra Androiddal?

„A journey of a thousand miles must begin with a single step.”
// Lao Tzu

Szülinapok és események szinkronja is.

--

"Események, exportálás menüpont"

El tudod hulyek szintjen is mondani, hogy hol van ez a menupont? Nem talalom, de tuti, hogy csak vak vagyok.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.

https://www.facebook.com/events/list

Jobb fent fogaskerék -> export

Ott van két link, copy URL, és beteheted bárhova, ami ical URL-t vár.

--

Halas koszonetem. Tenyleg.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.

Áthidaló félmegoldás:
Úgy oldottam meg pillanatnyilag, hogy APP telepítéskor a születésnapokat kirakom egy Array-be, amint szérializálva MySQL-be betolok. Így a CRONJOB ebből dolgozik, sokkal gyorsabban is.

Szépséghiba: ha lesz egy új ismerőse, akkor annak nem szól a szülinapján, DE bármely más ismerőse szülinapjakor, ha visszajön, akkor frissítem az SQL-t. 99%-os megoldás.

„A journey of a thousand miles must begin with a single step.”
// Lao Tzu

Siman loginkor is lefrissitheted...
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.

Jogos, köszönet!

„A journey of a thousand miles must begin with a single step.”
// Lao Tzu