Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用FB PHP API将状态更新发布到新闻提要_Php_User Interface_Facebook - Fatal编程技术网

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

使用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上创建了一个应用程

我运行了一个音乐搜索引擎,我已经使用了基本的Facebook整合,比如like按钮,但我的下一个目标是创建更深层次的整合

我的目标是,当用户搜索某物($q,我将其设置为cookie$\u cookie['q'])时,会出现一个状态更新,显示他们搜索的内容和指向我网站的链接

我可以允许用户通过JavaScript登录facebook,但我想我需要用PHP的方式

我需要使用PHP,因为在用户授予权限后,我希望用户不再被纠缠。我有Facebook PHP SDK,并在Facebook上创建了一个应用程序。在线教程并没有真正起到帮助作用,尽管我的PHP是okayish,但我仍然处于第一阶段

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

提前谢谢!
尼尔

好吧,你需要做的是相对容易的。我想你已经有了适合这个的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);