facebook SDK 4.0에 문제가 있습니다.facebook SDK 4.0 PHP에서 무한 리디렉션 루프
세션/쿠키를 삭제 한 후에 문제가 해결되었습니다. 그러나 때로는, 그리고 내가 애플 리케이션에 갈 때, 그것은 끝없는 리디렉션 루프를 시작 때 결정할 수 없습니다!
문서는 정확한 ansswers 제공하지 않기 때문에 나는 자식에 내 모든 코드를 삽입했습니다
https://github.com/sandrodz/facebook-canvas-app-sample-sdk-4.0/blob/master/index.php<?php
// Working canvas APP, FB SDK 4.0
session_start();
// Load SDK Assets
// Minimum required
require_once 'Facebook/FacebookSession.php';
require_once 'Facebook/FacebookRequest.php';
require_once 'Facebook/FacebookResponse.php';
require_once 'Facebook/FacebookSDKException.php';
require_once 'Facebook/FacebookCanvasLoginHelper.php';
require_once 'Facebook/GraphObject.php';
require_once 'Facebook/GraphUser.php';
require_once 'Facebook/GraphSessionInfo.php';
require_once 'Facebook/HttpClients/FacebookHttpable.php';
require_once 'Facebook/HttpClients/FacebookCurl.php';
require_once 'Facebook/HttpClients/FacebookCurlHttpClient.php';
use Facebook\FacebookSession;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Faceboob\FacebookSDKException;
use Facebook\FacebookCanvasLoginHelper;
use Facebook\GraphObject;
use Facebook\GraphUser;
use Facebook\GraphSessionInfo;
use Facebook\HttpClients\FacebookHttpable;
use Facebook\HttpClients\FacebookCurl;
use Facebook\HttpClients\FacebookCurlHttpClient;
// Facebook APP keys
FacebookSession::setDefaultApplication('XXX','XXXXX');
// Helper for fb canvas authentication
$helper = new FacebookCanvasLoginHelper();
// see if $_SESSION exists
if (isset($_SESSION) && isset($_SESSION['fb_token']))
{
// create new fb session from saved fb_token
$session = new FacebookSession($_SESSION['fb_token']);
// validate the fb_token to make sure it's still valid
try
{
if (!$session->validate())
{
$session = null;
}
}
catch (Exception $e)
{
// catch any exceptions
$session = null;
}
}
else
{
// no $_SESSION exists
try
{
// create fb session
$session = $helper->getSession();
}
catch(FacebookRequestException $ex)
{
// When Facebook returns an error
print_r($ex);
}
catch(\Exception $ex)
{
// When validation fails or other local issues
print_r($ex);
}
}
// check if 1 of the 2 methods above set $session
if (isset($session))
{
// Lets save fb_token for later authentication through saved $_SESSION
$_SESSION['fb_token'] = $session->getToken();
// Logged in
$fb_me = (new FacebookRequest(
$session, 'GET', '/me'
))->execute()->getGraphObject();
// We can get some info about the user
$fb_location_name = $fb_me->getProperty('location')->getProperty('name');
$fb_email = $fb_me->getProperty('email');
$fb_uuid = $fb_me->getProperty('id');
}
else
{
// We use javascript because of facebook bug https://developers.facebook.com/bugs/722275367815777
// Fix from here: http://stackoverflow.com/a/23685616/796443
// IF bug is fixed this line won't be needed, as app will ask for permissions onload without JS redirect.
$oauthJS = "window.top.location = 'https://www.facebook.com/dialog/oauth?client_id=1488670511365707&redirect_uri=https://apps.facebook.com/usaidgeorgia/&scope=user_location,email';";
}
?>
내가 라인으로 디버그 라인에 나서서
, 이러한 나의 발견됩니다 :
// see if a existing session exists
if (isset($_SESSION) && isset($_SESSION['fb_token']))
{
echo '$_SESSION and $_SESSION["fb_token"] are set';
// create new session from saved access_token
$session = new FacebookSession($_SESSION['fb_token']);
// validate the access_token to make sure it's still valid
try
{
if (!$session->validate())
{
$session = null;
echo 'access_token is not valid';
}
echo 'access_token is valid';
}
catch (Exception $e)
{
// catch any exceptions
$session = null;
echo 'something error happened ' . $e;
}
}
내가 얻을 오류 :
$_SESSION and $_SESSION["fb_token"] are setsomething error happened exception 'Facebook\FacebookSDKException' with message 'Session has expired, or is not valid for this app.' in /home2/nakaidze/public_html/mesamoqalaqo_app/Facebook/FacebookSession.php:247 Stack trace: #0 /home2/nakaidze/public_html/mesamoqalaqo_app/Facebook/FacebookSession.php(221): Facebook\FacebookSession::validateSessionInfo(Object(Facebook\GraphSessionInfo), '148867051136570...') #1 /home2/nakaidze/public_html/mesamoqalaqo_app/user-functions.php(56): Facebook\FacebookSession->validate() #2 /home2/nakaidze/public_html/mesamoqalaqo_app/index.php(2): require('/home2/nakaidze...') #3 {main}