ugrás a tartalomhoz

Facebook php SDK - már megint nem tiszta php - kérdés. előre is sry. :(

gtoma · 2015. Nov. 19. (Cs), 10.25
A facebookhoz egyáltalán nem szeretnék érteni, de úgy hozta a sors, hogy muszáj csinálnom egy egyszerű fb hírfolyam megjelenítést a facebook php sdk segítségével.

Egyszerűen nem találok megfelelő fórumot. Mivel php sdk -val csinálom, így próbálkozom itt.

Kérlek ne lincseljetek.

Szóval, találtam rá egy scriptet, ami nagy örömmel töltött el.
itt

sajnos az örömöm nem tartott sokáig, mivel hiába van app_id, hiába van app_secret, a facebook_access_token -t nem sikerül "megszereznem".

16. sor: $_SESSION['facebook_access_token'] nem létező, és fogalmam nincs honnan kellene megkapnia az értéket. mindig elszalad a 99. sorhoz, és elviszi a böngészőt az fb oldalra.

első meghíváskor értem én, itt engedélyezhetem magát az alkalmazást, ha nincs még engedélyezve.

aztán visszahívja a callback -ben megadott url-t, és ott kapok get-ben egy arrayt:
array("code" => "...", "state" => "...");

próbáltam mindkét változót megadni, mint accessToken, de egyik sem jó.

Aztán megpróbáltam a callback url-ben ezt:


include_once("web2cms/basic.systemdata.php");
define('FACEBOOK_SDK_V4_SRC_DIR', _ROOTDIR . '/facebook-php-sdk-v4/');
require_once (_ROOTDIR . '/facebook-php-sdk-v4/autoload.php');

$FaceBookApp = new Facebook\Facebook([
    "app_id" => "1646892728924924",
    "app_secret" => "a669cf51e56e117702ab892ecaabce6d",
    "default_graph_version" => "v2.5"
]);

$helper = $FaceBookApp->getRedirectLoginHelper();
try {
    $accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
    // When Graph returns an error
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
    // When validation fails or other local issues
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
}

if (isset($accessToken)) {
    // Logged in!
    print "--------------------->".$accessToken;
    return (string) $accessToken;

    // Now you can redirect to another page and use the
    // access token from $_SESSION['facebook_access_token']
} elseif ($helper->getError()) {
    print "userDenied";
    exit;
}

Amire a következő hibát kapom: Facebook SDK returned an error: Cross-site request forgery validation failed. Required param "state" missing.

Szóval nem értem. Kell accessToken, ami szerintem egy felhasználói engedély az appnak, de egyszerűen nem tudom "lekérni" sehonnan.

További probléma, hogy ezt találtam keresgélés közben:
itt
itt pedig azt írják, hogy maximum 2 hónapig jó egy accessToken.
Mivan?! 2 havonta le kell majd okéznia a felhasználónak, hogy megjeleníthetem a hírfolyamát?

Kérlek tekintsetek el az anyázástól, hogy ezt a témát itt hoztam fel, de eléggé el vagyok keseredve, mert egy roppant egyszerű probléma, de sehol nem találok egyértelmű, működő választ, és már 2 napja "tesztelgetem" különböző módokon.