使用FB PHP API将状态更新发布到新闻提要
我运行了一个音乐搜索引擎,我已经使用了基本的Facebook整合,比如like按钮,但我的下一个目标是创建更深层次的整合 我的目标是,当用户搜索某物($q,我将其设置为cookie$\u cookie['q'])时,会出现一个状态更新,显示他们搜索的内容和指向我网站的链接 我可以允许用户通过JavaScript登录facebook,但我想我需要用PHP的方式 我需要使用PHP,因为在用户授予权限后,我希望用户不再被纠缠。我有Facebook PHP SDK,并在Facebook上创建了一个应用程序。在线教程并没有真正起到帮助作用,尽管我的PHP是okayish,但我仍然处于第一阶段 如果有人给我一些指导方针/想法或帮助我编写代码,我将不胜感激 提前谢谢!使用FB PHP API将状态更新发布到新闻提要,php,user-interface,facebook,Php,User Interface,Facebook,我运行了一个音乐搜索引擎,我已经使用了基本的Facebook整合,比如like按钮,但我的下一个目标是创建更深层次的整合 我的目标是,当用户搜索某物($q,我将其设置为cookie$\u cookie['q'])时,会出现一个状态更新,显示他们搜索的内容和指向我网站的链接 我可以允许用户通过JavaScript登录facebook,但我想我需要用PHP的方式 我需要使用PHP,因为在用户授予权限后,我希望用户不再被纠缠。我有Facebook PHP SDK,并在Facebook上创建了一个应用程
尼尔好吧,你需要做的是相对容易的。我想你已经有了适合这个的java脚本,但我也会把它添加进去,以防万一 好的!首先,我们需要在页面顶部添加php脚本,以便在用户登录到facebook时获取信息: 定义(“FACEBOOK应用程序ID”、“你的应用程序ID”); 定义('FACEBOOK_SECRET'、'YOUR APP SECRET'); 函数get\u facebook\u cookie($app\u id,$application\u secret){ $args=array(); parse_str(trim($COOKIE['fbs'.$app_id],“”),$args); ksort($args); $payload=''; foreach($args作为$key=>$value){ 如果($key!=“sig”){ $payload.=$key.'='.$value; } } 如果(md5($payload.$application\u secret)!=$args['sig']){ 返回null; } 返回$args; } $fbcookie=get\u facebook\u cookie(facebook\u APP\u ID,facebook\u SECRET); $fb_访问_令牌=$fbcookie['access_令牌] 我假设你知道应用程序ID和密码等。请在“定义”部分填写这些信息 接下来,我们需要为javascript登录在html中添加一些内容: init({appId:'您的应用程序ID再次出现',状态:true, cookie:true,xfbml:true}); FB.Event.subscribe('auth.login',函数(响应){ window.location.reload(); }); 这会进入你的身体脚本 下一部分是facebook登录按钮: ?fb:login按钮perms=“发布\u流,脱机访问”onlogin=“窗口.位置.重新加载(true);“autologutlink=“true”?/fb:登录按钮 (问号是符号,因为它们与Stackoverflow中的编码符号冲突) 现在你可能想知道离线访问的必要性。这很容易…我也很想知道!哈哈,我不是100%确定为什么会发生这种情况,但我认为这是我的Web服务器(有点奇怪),所以请先在没有离线权限的情况下尝试它,如果不起作用,然后再将它添加回去 这就是登录方面和发布方面需要做的全部工作,这是一个curl脚本: $url=”https://graph.facebook.com/me/feed"; $ch=curl_init(); $attachment=array('access\u token'=>''.$fb\u access\u token'.',
'message'=>“刚刚搜索了“$q.”, )) 你看到我做的了吗?别忘了根据你的网站布局等添加if语句,这样用户就不会一直发布“我刚在http://domain.com上搜索过”“哈哈,尽管这会激发人类的好奇心;)由于没有进行搜索,因此$q=NULL,因此它仍然不会发送任何lol,因此当您有一个查询lol:P时,可能会添加一个if语句(是的,我知道我在我的“打印”版本的url中添加了一个空格,但是stackoverflow对我可以发布的url数量非常挑剔) 请问我是否需要我进一步解释其他部分 祝你好运,搜索愉快
Jon嘿,Jon,谢谢你提供的所有信息,我还没有检查它是否有效,但是你会得到我的投票,我会给你打勾,让你仔细查看细节,再次感谢!嗨,Jon,很抱歉打扰你,但是最后的几段代码是在一起的吗?或者它们在我的php脚本中是在不同的位置吗?是的,很抱歉,它们在一起^^ StackOverFLow有点奇怪代码编写部分,所以我仍在努力解决如何正确编写。
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);