2011-04-07 68 views
6

我真的很困惑。我是否需要Facebook Like按鈕的XFBML版本的appId?

我想在我的網站上使用一些非常簡單的Facebook插件,特別是基本的「贊」按鈕。

我已經知道如何使用iFrame的限制版本。

但是,現在我試圖找出XFBML方法,並且在線文檔似乎對您已知的很多假設以及工作示例上的確很短。例如,它們向您展示瞭如何調用JavaScript Init併爲您提供元素fb的單行HTML代碼:like ...但我看不到任何示例如何顯示/隱藏面,設置默認字體等。就像在iFrame代碼中一樣。

我已經知道你需要將它們作爲屬性添加到元素中,但是這要歸功於StackOverlfow,並且不需要感謝Facebook文檔,它只是簡單地將您帶入圈子。

<fb:like href="http://mydomain.com" show_faces="true" action="recommend" colorscheme="light" width="400" height="35" /> 

好了,所以現在使用XFBML代碼時,它的高度應該擴張/收縮自動根據所登錄或沒有我假設。

我不知道我是否應該初始設置高度爲「80」,或者如果這種情況自動發生。

而我不知道我應該在Init腳本中使用'你的應用程序ID'。沒有應用程序......只是一個Facebook公司頁面......所以當我只是在網站上放置一個Like按鈕時,爲什麼還需要一個應用程序ID?

<script> 
window.fbAsyncInit = function() { 
    FB.init({ 
    appId: 'your app id', 
    status: true, 
    cookie: true, 
    xfbml: true 
    }); 
}; 

對這些問題的任何啓發,將不勝感激。

謝謝你!

回答

16

回答我的問題,拿出我的頭髮後...

http://developers.facebook.com/docs/guides/web/

「中的JavaScript SDK要求您與Facebook註冊你的網站獲得一個App ID(或APPID )。appId是您網站的唯一標識符,可確保我們在用戶和您的網站之間具有適當的安全級別。以下示例顯示瞭如何在您擁有應用程序ID時加載JavaScript SDK:「

http://developers.facebook.com/setup/

該頁面/表格的標題是創建應用程序。我仍然不明白他們爲什麼不使用更通用的術語。我不是「創建應用程序」,我不認爲我的網站是一個應用程序。

+18

是的,Facebook的文檔是徹頭徹尾的可怕的。 – billmalarky 2011-11-01 17:45:29

+2

離開'appId = 3990840334890'似乎工作得很好 – 2012-11-03 23:09:45

+0

@PeterEhrlich我想你不會在提供appId時丟失統計信息/見解。似乎也適用於我。帶有評論插件的事件... – benzkji 2016-07-01 09:07:52

1

我沒有一個應用程序,但剛剛從like code generator得到這段代碼,它似乎在我的本地環境(它使用localhost:8000但仍然有136個喜歡)中工作。當我按下按鈕時,按預期方式獲得Facebook登錄彈出窗口。

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 

<fb:like href="url here (optional)" send="true" width="450" show_faces="true"></fb:like> 
0

你可以做...

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://ogp.me/ns/fb#" > 

... 

window.fbAsyncInit = function() { 
FB.init({ 
    // appId  : 'none', // App ID 
    cookie  : true, // enable cookies to allow the server to access the session 
    xfbml  : true // parse XFBML 
}); 

FB.Event.subscribe('edge.create', function(href, widget) { 
      var ss=href; 
      if (ss.match(/myWebSite/i)) { 
        alert('You just liked me'); 
      } 
}); 
}; 

(function (d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "https://connect.facebook.net/en_GB/all.js#xfbml=1"; 
    //js.src = "https://connect.facebook.net/en_GB/all.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk')); 

... 

<fb:like ref="core" class="fb-like" data-href="http://www.mySite.com" 
data-send="false" data-layout="button_count" 
data-width="50" data-show-faces="false" data-colorscheme="dark"></fb:like> 

上述作品,但像自己,並注意如何Facebook的劃分了真正的喜歡與Facebook註冊的網站(給人一種spash頁面,#followers,#talking等),從喜歡的網址,它不知道。 (該網站至少有一個增長的計數器)。它有點擊敗了被喜歡的目的。我可能是錯的,但我認爲它甚至不會發布有關後者的消息。

這太糟糕了,因爲我跑出來的電話號碼爲Facebook :)

然後,至少對我來說,還有一個更大的問題。如果你想獎勵某人喜歡你,你不能確定他們是否確定,因爲這是js。如果您嘗試將js重定向到獎勵頁面,用戶可以剪切粘貼該url。你可以設置一個rnd會話變量,將它傳遞給js,並將js重定向到一個php頁面,但用戶也可以弄清楚。

你似乎無法(或註釋掉的appid)...

require 'face_sdk/face/src/facebook.php'; 
$facebook = new Facebook(array(
    'appId' => '', 
    'secret' => '', 
)); 
$user = $facebook->getUser(); 

所以似乎沒有直接的PHP方式。我正在將iframed Like按鈕url傳遞給php,用simple_html_dom.php解析它,並找出兩個主div中的哪一個具有'hidden_​​elem'類。但最終,這不值得,因爲Facebook會把你當成二等公民。