2016-03-01 99 views
0

我實現使用Facebook登錄一個新的應用:
在developers.facebook.com我設定的設置:
應用程序域:(空)
網站網址:http://localhost/site/
客戶端的OAuth登錄:是
網頁的OAuth登錄:是
力網絡OAuth的重新驗證:無
嵌入式瀏覽器的OAuth登錄:沒有
有效的OAuth重定向的URI:http://localhost/site/externallogin/Facebook的API redirect_ui錯誤

而且在我的應用程序的登錄鏈接:

$facebook = new Facebook\Facebook([ 
    'app_id' => FB_APP_ID, 
    'app_secret' => FB_APP_SECRET, 
    'default_graph_version' => 'v2.5', 
]); 

$helper = $facebook->getRedirectLoginHelper(); 
$permissions = ['email', 'public_profile', 'user_friends']; 
$loginUrl = $helper->getLoginUrl("http://localhost/site/externallogin", $permissions); 
echo '<a href="' . htmlspecialchars($loginUrl) . '">Log in with Facebook!</a><hr>'; 

而且我externallogin頁:

$helper = $facebook->getRedirectLoginHelper(); 

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

但是當我重定向我得到了以下錯誤:

Graph returned an error: Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request

我已經嘗試將default_graph_version更改爲2.2,將有效的OAuth重定向URI和返回URL更改爲各種類型,但沒有任何內容,相同。
我已閱讀與此相關的一切,並嘗試了所有的方法,但仍然是相同的。
我不知道什麼可以導致此錯誤。

我的問題是:我如何解決這個錯誤,我正確地獲得訪問令牌。 print 1 print 2

+1

停止隨機揮舞着周圍做無用的東西像改變'default_graph_version'設置。如果你去'http:// localhost/site/externallogin'你的服務器是否自動在末尾添加'/'? – ceejayoz

+0

是的,它增加了/在最後,當我輸入http:// localhost/site/externallogin它將返回http:// localhost/site/externallogin/ – BrunoRamalho

+0

那就是你的問題了。看到我的答案。 – ceejayoz

回答

0

$helper->getAccessToken()上運行必須是您提供給$helper->getLoginUrl()確切相同的URL。正如你指出http://localhost/site/externallogin重定向到http://localhost/site/externallogin/您的網絡服務器,添加/當你$loginUrl

$loginUrl = $helper->getLoginUrl("http://localhost/site/externallogin/", $permissions); 
+0

我將getAccessToken的所有代碼移至與getLoginUrl完全相同的URL。我添加/到最後像:$ loginUrl = $ helper-> getLoginUrl(「http:// localhost/site/login /」,$ permissions);但我得到了同樣的錯誤 – BrunoRamalho

+0

@BrunoRamalho你不需要移動代碼。 – ceejayoz

+0

查看我的編輯,我得到了同樣的錯誤 – BrunoRamalho