2015-04-15 84 views
2

Iam尝试使用Facebook PHP SDK实现Facebook登录。我可以很容易地进入Facebook的对话框进行授权,但之后,重定向循环开始,我可以看到我的浏览器尝试连接到Facebook,然后回到我的本地主机,然后回到Facebook ...直到我的浏览器终于​​给我Facebook PHP SDK本地主机上简单登录脚本的重定向循环

此网页有重定向循环

有了这个链接挂在地址栏中

https://www.facebook.com/v2.2/dialog/oauth?client_id=MY_APP_ID_HERE&redirect_uri=http%3A%2F%2Flocalhost%2FMY_APP_NAME%2Ffbconfig.php&state=acd9a0da2b78dasasasasasase1469d&sdk=php-sdk-4.0.15&scope=#=

Iam试图运行该示例this page 以下是处理Facebook PHP SDK登录操作的文件。

fbconfig.php

<?php 
session_start(); 
// added in v4.0.0 
require_once 'autoload.php'; 
use Facebook\FacebookSession; 
use Facebook\FacebookRedirectLoginHelper; 
use Facebook\FacebookRequest; 
use Facebook\FacebookResponse; 
use Facebook\FacebookSDKException; 
use Facebook\FacebookRequestException; 
use Facebook\FacebookAuthorizationException; 
use Facebook\GraphObject; 
use Facebook\Entities\AccessToken; 
use Facebook\HttpClients\FacebookCurlHttpClient; 
use Facebook\HttpClients\FacebookHttpable; 
// init app with app id and secret 
FacebookSession::setDefaultApplication('MY APP ID ','`MY SECRET'); 
// login helper with redirect_uri 
    $helper = new FacebookRedirectLoginHelper('http://localhost/myappname/fbconfig.php'); 
try { 
    $session = $helper->getSessionFromRedirect(); 
} catch(FacebookRequestException $ex) { 
    // When Facebook returns an error 
} catch(Exception $ex) { 
    // When validation fails or other local issues 
} 
// see if we have a session 
if (isset($session)) { 
    // graph api request for user data 
    $request = new FacebookRequest($session, 'GET', '/me'); 
    $response = $request->execute(); 
    // get response 
    $graphObject = $response->getGraphObject(); 
     $fbid = $graphObject->getProperty('id');    // To Get Facebook ID 
     $fbfullname = $graphObject->getProperty('name'); // To Get Facebook full name 
     $femail = $graphObject->getProperty('email'); // To Get Facebook email ID 
    /* ---- Session Variables -----*/ 
     $_SESSION['FBID'] = $fbid;   
     $_SESSION['FULLNAME'] = $fbfullname; 
     $_SESSION['EMAIL'] = $femail; 
    /* ---- header location after session ----*/ 
    header("Location: index.php"); 
} else { 
    $loginUrl = $helper->getLoginUrl(); 
header("Location: ".$loginUrl); 
} 
?> 

所以这个文件将自身设置为loginredirectionURL,但由于一点也没有被创建的会话,文件一而再,再而再次调用它的自我。

我只是不明白为什么会议没有被创建。我的应用程序域和站点URL设置必须正确,因为iam在没有任何URL错误的情况下进入Facebook授权对话框。我可以顺利地授予应用程序权限,但在Facebook对话框消失后,我得不到反馈,只是重定向循环。

回答

1

在应用程序的“设置”中的“高级”面板中,确保您填写了“有效的OAuth重定向URI”标签。 尝试使用2个文件,一个用于登录,另一个用于重定向。

,我用来测试样品: 1.PHP

$helper = new FacebookRedirectLoginHelper('$url',$facebook_id,$facebook_id_secret); 
    echo '<a href='.$helper->getLoginUrl().'>Login with fb</a>'; 

2.PHP

FacebookSession::setDefaultApplication($facebook_id,$facebook_id_secret); 
    $redirect_url = $url; 
    $helper = new FacebookRedirectLoginHelper($redirect_url); 
    try { 
     $session = $helper->getSessionFromRedirect(); 
    } catch(FacebookRequestException $ex) { 
     // When Facebook returns an error 
    } catch(\Exception $ex) { 
     // When validation fails or other local issues 
    } 
    if ($session) { 
     echo 'logged in'; 
    } 

其中$ url是URL由您在设置/高级设置。

我希望这是有用的。

+0

非常感谢,它现在工作后,填写有效的OAuth重定向URIs ..我只是不明白为什么这是没有提到的任何教程中,我正在阅读这个SDK ... – Lukesoft

+0

你是欢迎,我忘了我在哪里找到了。我昨天开始学习facebook php sdk,祝你好运! –