简体   繁体   English

如何获取访问令牌facebook api正确的方法?

[英]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 . 刚刚玩facebook api但无法获得基本设置。从facebook SDK下载了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: 对于facebook php sdk4你可以像这样获得访问令牌进入会话:

$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() 使用getToken()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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