2013-09-30 106 views
6

我不断收到以下错误网址不允许:Facebook的PHP登录

给定的URL不会被应用程序配置:一个或多个 给定的URL允许不被应用的设置允许的。必须 与网站网址或Canvas网址相符,或者该网域必须是其中一个应用网域的子域 。

当我尝试用我的PHP代码片段(见下文)登录用户。我的Facebook设置如下:

App Domains: myappname-mynamespace.rhcloud.com www.myappname-mynamespace.rhcloud.com 

Site URL: http://myappname-mynamespace.rhcloud.com/ 

Canvas Page: http://apps.facebook.com/myappname 

Canvas URL: http://myappname-mynamespace.rhcloud.com/ 

Secure Canvas URL: https://myappname-mynamespace.rhcloud.com/ 

我读过类似的问题hereherehereherehere,他们都似乎在说同样的话:我的网站URL(网站与Facebook登录)是不正确。

但我Openshift URL是这样

http://myappname-mynamespace.rhcloud.com 

所以这就是我把Facebook网站URL字段。我在我的Openshift齿轮的根目录下面的PHP代码(index.php):

<?php 
    require 'php-sdk/facebook.php'; 
    $facebook = new Facebook(array(
     'appId' => 'xxxx', 
     'secret' => 'xxxx' 
    )); 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 
    <title>Facebook PHP</title> 
</head> 
<body> 
<h1>Hello World!</h1> 
<?php 
    // get user from facebook object 
    $user = $facebook->getUser(); 

    if ($user): // check for existing user id 
     echo '<p>User ID: ', $user, '</p>'; 
    else: // user doesn't exist 
     $loginUrl = $facebook->getLoginUrl(array(
      'display' => 'popup', 
      'redirect_uri' => 'http://apps.facebook.com/myappname' 
     )); 
     echo '<p><a href="', $loginUrl, '" target="_top">login</a></p>'; 
    endif; 
?> 
</body> 
</html> 

我在做什么错?

当我进入我的Facebook应用程序的URL(http://apps.facebook.com/myappname),Hello World!和我的登录链接显示在我的Facebook应用程序的iframe顶部。但是,当我点击登录链接时,出现上述错误。任何援助将不胜感激!

编辑

我进入以下网址在浏览器和Hello World,并双双显示的登录链接。

http://myappname-mydomainname.rhcloud.com/ 
https://myappname-mydomainname.rhcloud.com/ 
+1

一切都看起来不错。但是在黑暗中只是一个镜头:当我将你的配置与我的相比时,我想说你需要在http:// myappname-mynamespace.rhcloud.com'末尾添加一个斜线,就像网站URL一样。 –

+0

+1感谢您的回复@StéphaneBruckert我重复检查了我的网站网址,并且我有一个正斜杠'http:// fbtest-projectkohana.rhcloud.com /'。我会纠正我的问题。在写完这个问题之后,我可能已经写了'/',但它仍然不起作用。这是我写的第二个测试应用程序,它产生了这个错误。这个问题与我使用Openshift有关吗? Openshift为我的免费帐户使用共享的SSL证书。 – Anthony

+1

有时候会发生,无论您在FB设置中进行更改,都会在几个小时后产生影响。所以一旦你做了改变,请继续检查。 – Chandresh

回答

2

一段时间后,我无论出于何种原因正在修改Facebook的API,我一直在得到同样的错误。结果发现有些网址应该是https,而不是Facebook留下了正确的说明。 我建议将Site URL: http://myappname-mynamespace.rhcloud.com更改为Site URL: https://myappname-mynamespace.rhcloud.com。如果这没有帮助,我会建议查看其他URL并更改它们。 好运

+0

+1非常感谢您的回复。我将我的站点URL(在FB配置中)更改为'https:// fbtest-projectkohana.rhcloud.com /'保存,然后刷新,但我得到了同样的错误。然而,在我的浏览器的网址,我注意到,重定向uri有http,而不是https'... redirect_uri = http%3A%2F%2F ...'。我改变了上面提到的脚本来使用https,而git将它推送到了Openshift服务器,现在我看到'... redirect_uri = https%3A%2F%2F ...'但我仍然得到相同的错误。这个错误是由我的免费的Openshift帐户/应用使用的共享SSL证书造成的吗? – Anthony