2016-03-01 100 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