我经营一个音乐搜索引擎,我已经使用了基本的Facebook集成,就像按钮一样,但我的下一个目标是创建更深层次的整合,
我的目标是,当用户搜索某些内容($ q,我设置为Cookie $ _COOKIE ['q'])时,会显示状态更新,说明他们搜索的内容以及指向我网站的链接。
我可以允许用户通过JavaScript登录facebook,但我认为我需要以PHP的方式进行操作。
我需要使用PHP,因为在用户授予权限后,我希望用户不会再次受到攻击。我有Facebook PHP SDK并在Facebook上创建了一个应用程序。在线教程并没有真正帮助,我仍然在第1方,即使我的PHP很好。
如果有人给我一些指导方针/想法或帮助编写代码,我将非常感激。
提前致谢! 尼尔
答案 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”。
请问我是否需要我进一步解释其他部分。
祝你好运,快乐的搜索!
乔恩