2010-10-27 43 views
4

Facebook.com錯誤我生成使用登錄網址:與getLoginUrl()

$facebook->getLoginUrl(array('canvas' => 1, 'fbconnect' => 0, "display"=>"page", 'next' => APP_URL, 'req_perms' => 'email,publish_stream,offline_access')) 

然而,當用戶點擊,他將被重定向到該頁面與Facebook商標和消息中的鏈接「去到Facebook。 com'下面。爲什麼會發生這種情況,以及如何解決它?

一個活生生的例子:http://apps.facebook.com/soundofcamden/(只需點擊鏈接進行身份驗證)

回答

3
$login_url = $facebook->getLoginUrl(array('canvas' => 1,'fbconnect' => 0, 'req_perms' => 'email,publish_stream,offline_access', 'next' => APP_URL)); 
echo '<div class="notice">You need to <a href="' . $login_url . '" onclick="top.location.href = \'' . $login_url . '\';">authenticate first</a>.</div>'; 

的解決方案。

0

我遇到了這個問題,但它有一個不同的原因。我將它添加爲一個答案,因爲它可以幫助任何人登陸這裏。

隨着臉譜「發生了錯誤。請稍後再試「的錯誤頁面,我所看到的,我已經實現了Facebook API以下PHP聲明:

  • 使用未定義的常量‘APPID’ - 假設'APPID'
  • 使用未定義的常量」祕密「 - 假設'祕密'
  • 未定義指數:APPID
  • 未定義指數:祕密
  • 未定義的固定範圍的使用 - 假設‘範圍’
  • 使用未定義的常量REDIRECT_URI的 - 假設」 REDIRECT_ uri'

簡而言之,錯誤是由我從Facebook SDK文檔中複製/粘貼代碼引起的。

長時間的回答是前四個通知是由數組鍵名引號造成的。他們是unicode,PHP沒有意識到。用標準單引號替換它們可以修復它。

最後兩個是由數組鍵加引號不是(從Facebook的SDK文檔拷貝)引起的:

$params = array(
    scope => 'read_stream, friends_likes','email', 
    redirect_uri => "CALLBACK-URL.COM" 
); 

更改爲:

$params = array(
    'scope' => 'read_stream, friends_likes','email', 
    'redirect_uri' => "CALLBACK-URL.COM" 
); 

幾個非常簡單的問題,是一個痛點發現!我希望這可以幫助別人。

+0

它更多的是缺乏PHP知識,而不是與Facebook PHP-SDK直接相關的問題。你應該總是在PHP中引用數組鍵名。 – Gajus 2012-01-04 00:03:47

+2

我想指出的是,這是在Facebook PHP-SDK文檔中提供的示例。雖然它的核心是缺乏PHP知識,但這很容易讓很多人絆倒。我在這裏添加了答案,因爲這個問題在文檔頁面上列出。 – Aaron 2012-01-04 10:44:40

相關問題