获得用户许可后,如何在 Facebook 的用户墙上发帖?
Posted
技术标签:
【中文标题】获得用户许可后,如何在 Facebook 的用户墙上发帖?【英文标题】:How to post on user's wall in facebook after getting permission from user? 【发布时间】:2014-05-05 07:05:44 【问题描述】:有没有什么好的教程可以教如何使用 API 在用户的墙上发帖?这是流程:
用户将访问我的网站并点击文章末尾的“post to facebook”按钮。
他从 facebook 显示登录对话框,登录后他将允许我的应用程序代表他在他的墙上张贴。
授权后,他的分享链接会贴在他的墙上。
在以后的分享中,他不会被要求许可,因为他已经授权代表他发帖。因此,将来当他单击文章下方的“发布到 Facebook”按钮时,该项目将被发布到他的墙上,而无需打开 Facebook 登录对话框。
我搜索了很多教程,但没有找到任何符合我要求的教程。
我对 facebook API 非常陌生,之前没有使用过它。
有任何建议或教程链接吗? 谢谢!
【问题讨论】:
试试***.com/questions/5814158/… 不想在页面墙上发帖,而是在用户的个人资料墙上发帖 检查现在更新的链接 【参考方案1】:我的代码可以帮助您将带有图像的状态发布到用户的时间线。
用户授予您的应用权限后,您可能会收到一个名为“代码”的查询字符串参数,使用此代码,我们可以发布到用户的时间轴。
$code = @$_REQUEST["code"];
if(!empty($code))
// Start : Get live user access token ------------------------------------------ //
$token_url= "https://graph.facebook.com/oauth/"
. "access_token?"
. "client_id=" . FACEBOOK_APP_ID
. "&redirect_uri=" . urlencode( FACEBOOK_POST_LOGIN_URL)
. "&client_secret=" . FACEBOOK_APP_SECRECT
. "&code=" . $code;
$token = $this->get_app_access_token(FACEBOOK_APP_ID,FACEBOOK_APP_SECRECT,$token_url);
$access_token = $token;
// End : Get live user access token ------------------------------------------- //
// Start : Create album ------------------------------------------------------ //
$graph_url = "https://graph.facebook.com/me/albums?"
. "access_token=". $access_token;
$uri = 'https://graph.facebook.com/albums?access_token='.$access_token;
$post_fields = array('name' => trim( FACEBOOK_ALBUM_NAME ));
$curl = curl_init( $uri );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_POST, TRUE );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $post_fields );
$raw_data = curl_exec($curl);
curl_close( $curl );
$created_album_id = json_decode( $raw_data, $assoc = TRUE );
// End : Create album ---------------------------------------------------------- //
$facebook_share_image_url = FACEBOOK_SHARE_IMAGE_PATH;
$facebook_status_text = 'The status text';
$graph_url= "https://graph.facebook.com/me/photos";
$postData = "url=" . urlencode($facebook_share_image_url)
. "&message=" . urlencode($facebook_status_text)
. "&access_token=" .$access_token;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $graph_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$output = curl_exec($ch);
curl_close($ch);
// End : Add photos ------------------------------------------------------------- //
以及获取应用访问令牌的功能
function get_app_access_token($app_id, $secret,$token_url)
$url = 'https://graph.facebook.com/oauth/access_token';
$token_params = array(
"type" => "client_cred",
"client_id" => FACEBOOK_APP_ID,
"redirect_uri" => urlencode(FACEBOOK_POST_LOGIN_URL),
"client_secret" => FACEBOOK_APP_SECRECT
);
$a1 = $this->file_get_contents_curl($token_params,$token_url);
$a2 = str_replace("access_token=","",$a1);
$a3 = explode("&expires",$a2);
return $a3[0];
其他函数访问图url
function file_get_contents_curl($params,$url)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
$headers = array(
"Cache-Control: no-cache",
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
希望对您有所帮助..!!
【讨论】:
不客气,如果您对此有疑问,请告诉我 您的代码很有帮助。我刚刚接近解决方案。在获取访问令牌后运行应用程序时出现此错误:不允许全局 id xxxx。请使用特定于应用程序的 ID 具体的应用程序ID是什么。我为我的应用程序创建的 APP ID?还是用户的个人资料 ID? 您创建的应用的 APP ID【参考方案2】:您可以使用简单的 facebook 分享网址:
https://www.facebook.com/sharer/sharer.php?u=YOURPAGEURL
YOURPAGEURL 是您要共享的页面 URL。希望这会有所帮助。
【讨论】:
这不是我想要的。我希望当用户单击“发布到 facebook”按钮时,该链接将发布在用户的墙上,而无需从 facebook 打开任何对话框。显然,当用户未授予权限时,对话框将打开,但一旦用户授予权限,我想将他的令牌保存在 db 中,下次对照用户 ID 检查这些令牌并发布到他的个人资料而不打开 Facebook 对话框。跨度> 【参考方案3】:您必须在您的应用程序上获得 pubish_stream 权限,然后使用 curl 尝试此操作:- 您还需要一个用户访问令牌,然后通过 curl 调用发送访问令牌
$attachment = array(
'access_token' => $access_token,
'message' => 'i m success to using graph api for post wall',
'name' => 'Wall Post using graph api',
'link' => 'www.mysite.com',
'description' => 'Using the Graph API, any Facebook users Wall feed may be accessed by using this URL:',
'picture'=>'http://example.com/images/noimage.png'
);
$url = "https://graph.facebook.com/$facebook_id/feed";
$ch = curl_init();
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);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //to suppress the curl output
$result = curl_exec($ch);
curl_close ($ch);
print_r($result)
更多信息:- Graph API new feed post object-Attachment not showing
Post to a Facebook user's wall with cURL PHP
【讨论】:
非常感谢。必须试试这个。如果它解决了我的问题,肯定会接受答案。 欢迎您的老兄,如果您有任何问题,请告诉我,并显示您所做的代码以上是关于获得用户许可后,如何在 Facebook 的用户墙上发帖?的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 页面 - 发布到用户墙(在用户喜欢该页面后)
facebook - 如果用户在未经用户许可的情况下喜欢页面