2015-04-15 62 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,祝你好運! –