2011-01-14 100 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幾乎可以馬上工作,沒有任何問題。