2011-01-07 98 views
0

我運行一個音樂搜索引擎,我已經使用基本的Facebook一體化,就像喜歡按鈕,但我的下一個目標是創造更深層次的一體化,使用FB PHP API發佈狀態更新,新聞饋送

我目的是當用戶搜索某些東西($ q我將其設置爲cookie $ _COOKIE ['q'])時,將會出現狀態更新,說明他們搜索的內容以及指向我網站的鏈接。

我可以允許用戶通過JavaScript登錄Facebook,但我認爲我需要用PHP的方式來做到這一點。

我需要使用PHP,因爲在用戶給予權限後,我希望用戶不會再被糾纏。我有Facebook PHP SDK,並在Facebook上創建了一個應用程序。在線教程並沒有真正幫助,即使我的PHP是好的,我仍然處於第1平方。

如果有人給我一些指導方針/想法或幫助編碼,我將非常感激。

在此先感謝! 尼爾

回答

1

那麼你需要做的是相對容易。我認爲你已經有了正確的java腳本,但是我會添加它,只是incase!

好吧!首先,我們需要在頁面頂部添加php腳本,以便用戶登錄Facebook時獲取信息:

define('FACEBOOK_APP_ID','YOUR APP ID'); define('FACEBOOK_SECRET','您的APP祕訣'); 函數get_facebook_cookie($ app_id,$ application_secret){ $ args = array(); parse_str(修剪($ COOKIE [ 'FBS' $ APP_ID。], ''「),$參數); ksort($參數); $有效載荷= ''; 的foreach(的$ args爲$鍵= > $ value){ } if(md5($ payload。$ application_secret)!= $($ key!='sig'){ ARGS [ 'SIG']){ 返回NULL;} 返回 的$ args; } $ fbcookie = get_facebook_cookie(FACEBOOK_APP_ID,FACEBOOK_SECRET); $ fb_access_token = $ fbcookie [ 'ACCESS_TOKEN'];

我假設你知道關於應用程序ID和祕密等等......填寫定義部分下的那些。

接下來,我們需要添加一些事情到HTML中的JavaScript登錄:

FB.init({APPID: '了您的應用程序ID',狀態:真, cookie:true,xfbml:true}); FB.Event.subscribe('auth.login',function(response){ window.location.reload(); });

進入你的身體腳本。

下一部分是Facebook登錄按鈕:

FB:登錄按鈕燙髮= 「publish_stream,offline_access」 onlogin = 「window.location.reload(真)」; autologoutlink = 「真」? ?/ FB:登錄按鈕?

(問號是<>的符號,與#1的編碼符號,這些衝突)

現在你可能會想知道需要離線訪問。這很容易...我也想知道!大聲笑我不是100%確定爲什麼會發生這種情況,但我認爲這是我的網絡服務器(有點奇怪),所以先嚐試它沒有脫機權限,如果不起作用,然後將其添加回來。

所以這是所有你需要做的登錄方面和發佈方面是一個捲曲腳本:

$ url =「https://graph.facebook.com/me/feed」; $ ch = curl_init(); $ attachment = array('access_token'=>''。$ fb_access_token。'',
'message'=>「剛剛搜索過」$ q。「於http://domain.com」, );

curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment); 
$result= curl_exec($ch); 

curl_close ($ch); 

所以,你看到我做了什麼?不要忘記添加if語句取決於您的網站佈局等等,以便用戶不會發布「我只是在http:// domain.com搜索」哈哈雖然這會引發人類的好奇心;)由於沒有搜索這樣做$ q = NULL,因此它仍然不會發送任何聲音,所以也許廣告if語句當你有一個查詢lol:P(是的,我知道我從我的'打印'版本中添加了一個空間,但是stackoverflow是挑剔我多少的URL可以張貼v_v」笑)。

請問我,如果你需要我的任何進一步解釋的其他部分。

好運和快樂搜索!

喬恩

+0

嘿喬恩,感謝所有的信息,並沒有檢查它是否有效,但你會得到一個投票,並從我眼中勾出你的眼睛細節,再次感謝! – Niall 2011-01-09 12:40:01