2011-01-14 104 views
75

我正在尝试将我的项目与Facebook集成。我刚开始采取小步骤,只是试图登录,获得Facebook会话,并获得一些用户数据。我正在本地开发它,所以我的Facebook应用程序设置如下:Facebook API错误191

site URL: http://127.0.0.1:8888/mySite/ 

画布URL与上面相同。我没有指定网站域名。

然而,当我点击登录按钮,我得到一个错误:

API Error Code: 191 
API Error Description: The specified URL is not owned by the application 
Error Message: redirect_uri is not owned by the application. 

在我没有写任何服务器端代码来处理重定向的那一刻,等我的一切。完成后添加基于教程的JavaScript SDK Facebook for Websites

我做错了什么?这显然是与我的Facebook应用程序设置有关,但我看不到什么!

+0

对于读者:请注意,这个问题和接受的答案适用于本地服务器和开发/测试,以及真正的服务器和网址! – Stefano 2012-07-04 08:16:57

回答

87

UPDATE:
要回答这个API错误代码:191
redirect_uri应该等于(或相对)的网站URL。
enter image description here

提示:将基准网址,而不是指向特定页面的完整URL。

不被推荐:例如,如果你使用www.mydomain.com/fb/test.html为您的网站网址,并具有www.mydomain.com/fb/secondPage.html作为redirect_uri这会给你的191错误。

推荐:因此,不是有你的网站URL设置为一个基本的URL,如:www.mydomain.com/www.mydomain.com/fb/


我通过Facebook的今天Python sample application去了,我是震惊有人明确指出,你可以使用​​为网站URL,如果你是在本地开发:

Configure the Site URL, and point it to your Web Server. If you're developing locally, you can use http://localhost:8080/

虽然我确定你不能这样做,根据我自己的经验(尽管很老的测试)看来你实际上是CAN在本地测试你的Facebook应用程序!

于是我拿起了我的一个旧的应用程序和编辑它的名字,网站URL和Canvas URL: 网站网址:http://localhost:80/fblocal/

我下载了最新的Facebook PHP-SDK和我xampp/htdocs/fblocal/文件夹扔了。

但是我得到了和你一样的错误!我注意到,XAMPP是做一个自动重定向到http://localhost/fblocal/所以我改变了设置简单http://localhost/fblocal/和错误不见了我不得不(从privacy settings)删除应用程序,并重新安装我的应用程序和这里的结果:
alt text

之后,问了publish_stream权限,我能发布到我的个人资料(使用PHP-SDK):

$user = $facebook->getUser(); 
if ($user) { 
    try { 
     $post = $facebook->api('/me/feed', 'post', array('message'=>'Hello World, from localhost!')); 
    } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
    } 
} 

结果: alt text

+1

恩,所以现在我很困惑。这个答案是什么:http://stackoverflow.com/questions/4633846/facebook-app-development – musoNic80 2011-01-14 14:08:20

+1

我* GUESS *他的意思是,你可以在本地测试你的应用程序,但任何与Facebook的互动将需要发布你的网站/域。例如,如果您有Flash游戏,则可以在FB画布上进行本地测试。至于后面的代码,他正在解释如何保护你的** live **网站不被访问,直到开发完成并且你准备好上线。 – ifaour 2011-01-14 16:22:12

8

这仅仅是因为URL错误。

无论指定哪个网站URL都应该是正确的。

我提到的网站网址为http://localhost:3000/ 和域名为localhost,但在我的浏览器中我运行的是http://0.0.0.0:3000/

当我运行服务器为localhost:3000它解决了这个问题。

正如我所提到的,作为本地主机Facebook的网站URL将重定向到相同的,如果我们运行的是 0.0.0.0:3000,它会引起错误,“给定URL不被应用程序配置允许”。

2

我在使用Facebook身份验证方法时也面临同样的问题。 但我纠正了这个问题,在Facebook api(Apps >> My App >> Basic)中进行了以下更改。

  1. 我删除我在 ===给的网址>应用在Facebook上(帆布网址)
  2. 我只在 给网站的网址===>网站与Facebook登录选项

然后我给了我的网页AppId和App Secret。

因此,通过点击登录按钮,它要求访问权限,然后重定向它给网址(网站与Facebook登录)。

0

有同样的问题:

$params = array('redirect_uri' => 'facebook.com/pages/foobar-dev'); 
$facebook->getLoginUrl($params); 

当我改变了REDIRECT_URI从devloper页面活页,191错误上来。

所以我删除到$ params:

$facebook->getLoginUrl(); 

应用程序请求现在FB重定向到应用网址本身FE后:my.domain.com

我现在要做的是在指数检查.php我的应用程序,如果我在FB内部框架或不。如果不是,我将重定向到活动FB页面f.e.:

$app = 'facebook.com/pages/foobar-live'; 
$rd = (isset($_SERVER['HTTP_REFERER'])) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) : false; 
if ($rd == 'apps.facebook.com' || (!isset($_REQUEST['signed_request']))) { 
    echo '<script>window.parent.location = "'.$app.'";</script>'; 
    die(); 
} 
0

我注意到也,即使您指定的网站下secion - 网站与Facebook登录 - >网站网址为例如http://example.com,但如果您的应用程序域部分为空,并且您打开www.example.com网站,则您也会收到此错误。为了避免在“应用域名”部分编写example.com,这将允许子域名,如www.example.com,something.example.com等

11

对我而言,这是一个缺少的应用程序域。进入应用程序,并确保您的网站根目录已设置为应用程序域。看截图。

app domains is in the basic settings of your app

0

的东西,我想加你可以在呼叫时使用的URL,因为这是错误191在谷歌的第一个问题:

重定向时以脸书而不是自己的网站进行签名请求,如果用户安全浏览并且您的应用没有SSL重定向到Facebook,则可能会遇到此错误。

0

本地工作... 我无法获得feed api的工作,但共享api几乎可以马上工作,没有任何问题。