简体   繁体   中英

How to get access token facebook api correct way?

Just playing around with facebook api but couldn't get the basic setup.Downloaded the sdk from facebook SDK . I cant seem to get the access token working

$fb = new Facebook\Facebook([
  'app_id' => 'keyxx',
  'app_secret' => 'key',
  'default_graph_version' => 'v2.4',
  ]);
$helper = $fb->getRedirectLoginHelper();

  $accessToken = $helper->getAccessToken();

try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get('/me?fields=id,name',$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;
}

$user = $response->getGraphUser();

echo 'Name: ' . $user['name'];

?>

Forgot to mention that my app is a canvas This is another try by redirecting which does not work. All i see is a blank canvas

<?php

require_once 'facebook-php-sdk-v4/src/Facebook/autoload.php';
session_start()
echo 'hello';



$fb = new Facebook\Facebook([
  'app_id' => 'x',
  'app_secret' => 'y',
  'default_graph_version' => 'v2.4',
  'default_access_token' => isset($_SESSION['facebook_access_token']) ? $_SESSION['facebook_access_token'] : 'x|y'

  ]);


try {
  $response = $fb->get('/me?fields=id,name');
  $user = $response->getGraphUser();
  echo 'Name: ' . $user['name'];
  exit; //redirect, or do whatever you want
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  //echo 'Graph returned an error: ' . $e->getMessage();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  //echo 'Facebook SDK returned an error: ' . $e->getMessage();
}

$helper = $fb->getRedirectLoginHelper();
$permissions = ['email', 'user_likes'];
$loginUrl = $helper->getLoginUrl('http://www.unsquaringthewheel.com/newTemp/login-callback.php', $permissions);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';

?>

This is the callback login page

<?php
require_once 'facebook-php-sdk-v4/src/Facebook/autoload.php';

session_start();

$fb = new Facebook\Facebook([
  'app_id' => 'x',
  'app_secret' => 'y',
  'default_graph_version' => 'v2.4',
  'default_access_token' => 'x|y'
]);

$helper = $fb->getRedirectLoginHelper();

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

if (isset($accessToken)) {
  // Logged in!
  $_SESSION['facebook_access_token'] = (string) $accessToken;
} elseif ($helper->getError()) {
  // The user denied the request
}
header('Location: index.php');
$fb = new Facebook\Facebook([
  'app_id' => '{app-id}',
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.4'
  ]);

$res = $fb->get('/me', '{access-token}');

Reference

For facebook php sdk4 You can get access token into session like this:

$helper = new FacebookRedirectLoginHelper('your redirect url');
$session = $helper->getSessionFromRedirect();

if(isset($session))
{
    //error_reporting(0);
  // Request for user data
   echo $accessToken = $session->getToken();
}

use getToken()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM