使用FB PHP API将状态更新发布到新闻源

时间:2011-01-07 22:06:56

标签: php user-interface facebook

我经营一个音乐搜索引擎,我已经使用了基本的Facebook集成,就像按钮一样,但我的下一个目标是创建更深层次的整合,

我的目标是,当用户搜索某些内容($ q,我设置为Cookie $ _COOKIE ['q'])时,会显示状态更新,说明他们搜索的内容以及指向我网站的链接。

我可以允许用户通过JavaScript登录facebook,但我认为我需要以PHP的方式进行操作。

我需要使用PHP,因为在用户授予权限后,我希望用户不会再次受到攻击。我有Facebook PHP SDK并在Facebook上创建了一个应用程序。在线教程并没有真正帮助,我仍然在第1方,即使我的PHP很好。

如果有人给我一些指导方针/想法或帮助编写代码,我将非常感激。

提前致谢! 尼尔

1 个答案:

答案 0 :(得分:1)

那么你需要做的事情相对简单。我认为你已经拥有了正确的java脚本,但我会在其中添加,只需加入!

好!首先,我们需要在页面顶部添加php脚本,以获取用户登录到Facebook时的信息:

  

define('FACEBOOK_APP_ID','你的APP ID');   define('FACEBOOK_SECRET','你的APP秘密');   function get_facebook_cookie($ app_id,$ application_secret){     $ args = array();     parse_str(trim($ COOKIE ['fbs '。$ app_id],'“'),$ args);     ksort($参数);     $ payload ='';     foreach($ args as $ key => $ value){       if($ key!='sig'){         $ payload。= $ key。 '='。 $值;       }     }     if(md5($ payload。$ application_secret)!= $ args ['sig']){       return null;     }     返回$ args;   }   $ fbcookie = get_facebook_cookie(FACEBOOK_APP_ID,FACEBOOK_SECRET);   $ fb_access_token = $ fbcookie ['access_token'];

我假设你知道应用程序ID和秘密等等......在定义部分下填写。

接下来,我们需要在javascript登录的html中添加一些内容:

        

                         FB.init({appId:'你的APP ID AGAIN',状态:true,           cookie:true,xfbml:true});           FB.Event.subscribe('auth.login',function(response){           window.location.reload();           });           

这将进入你的正文脚本。

下一部分是facebook登录按钮:

  

?fb:login-button perms =“publish_stream,offline_access”onlogin =“window.location.reload(true);” autologoutlink = “真”? ?/ FB:登录按钮

(问号是<>符号,因为它们与Stackoverflow中的编码符号冲突)

现在您可能想知道离线访问的必要性。这很容易......我也很想知道!大声笑我不是百分之百确定为什么会这样,但我认为这是我的网络服务器(有点奇怪)所以首先尝试没有离线权限,如果这不起作用,那就把它重新加入。

因此,您需要为登录方面做的所有事情和发布方面都是卷曲脚本:

  

$ 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语句当你有一个查询大声笑:P(是的我知道我在我的'打印'版本的网址中添加了一个空格但是stackoverflow我很挑剔我可以发布多少网址v_v“lol”。

请问我是否需要我进一步解释其他部分。

祝你好运,快乐的搜索!

乔恩