2011-01-07 71 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