Facebook sdk - problemi con accessToken

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Vengo subito al punto. Vorrei pubblicare dei post tramite php su una pagina che gestisco.
Ho creato l'applicazione ed ottenuto un id e una kiave segreta.
Ho collocato queste due stringhe nella posizione indicata da facebook : https://developers.facebook.com/docs/php/gettingstarted

Credo di aver capito per sommi capi come funziona la generazione di accesstoken ma non capisco dove sbaglio, ecco il codice:

PHP:
<?php
session_start();
// Carico l'autoload
require_once __DIR__ . '/facebook-sdk-v5/autoload.php';

// Imposto Parametri
$fb = new Facebook\Facebook([
  'app_id' => 'xxxxxxxxxxxxxxxxxx',
  'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'default_graph_version' => 'v2.5',
]);

$helper = $fb->getPageTabHelper();

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)) {
  echo 'No OAuth data could be obtained from the signed request. User has not authorized your app yet.';
  exit;
}

// Logged in
echo '<h3>Page ID</h3>';
var_dump($helper->getPageId());

echo '<h3>User is admin of page</h3>';
var_dump($helper->isAdmin());

echo '<h3>Signed Request</h3>';
var_dump($helper->getSignedRequest());

echo '<h3>Access Token</h3>';
var_dump($accessToken->getValue());
In questo caso dovrei visualizzare i dati dei var_dump dopo Logged In, invece mi restituisce l'errore:
No OAuth data could be obtained from the signed request. User has not authorized your app yet.
Come se $accessToken non è stato valorizzato. Perchè??
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
non uso fb, ma ho dato un occhio al link che hai postato, l'unico punto che può fare la differenza tra quello che vedo che hai fatto e quanto indicato da fb è questo
Se l'autoloader non riesce a rilevare il percorso dei file di origine, puoi definire la posizione del codice sorgente prima dell'istruzione require_once.
define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ .'/facebook-sdk-v5/');
require_once __DIR__ .'/facebook-sdk-v5/autoload.php';
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Nulla avevo già provato anche questa soluzione.. facendo una cosa del genere ( che ho comunque riprovato a testare ):
p.s. I files sono contenuti in una cartella "progetto" che non credo influisca.
PHP:
<?php
session_start();
// Carico l'autoload
define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/facebook-sdk-v5/');
require_once __DIR__ . '/facebook-sdk-v5/autoload.php';

// Imposto Parametri
$fb = new Facebook\Facebook([
  'app_id' => 'xxxxxxxxxxxxxxxxxxxx',
  'app_secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'default_graph_version' => 'v2.6',
]);

//Creo access token

$helper = $fb->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)) {
// non so se questa sotto sia una stringa di cui si poteva anche fare a meno, visto che se non ho capito male la sessione viene comunque racchiusa in una variabile $accessToken ma nel dubbio l'ho inserita.
  // Logged in!
  $_SESSION['facebook_access_token'] = (string) $accessToken;
  // Now you can redirect to another page and use the
  // access token from $_SESSION['facebook_access_token']
}

//Creo un messaggio da inviare
$linkData = [
  'link' => 'http://www.test.com',
  'message' => 'Messaggio test',
  ];

try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post('/me/feed', $linkData, $accessToken);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}

$graphNode = $response->getGraphNode();

echo 'Posted with id: ' . $graphNode['id'];
Fatto sta che non va! :(