获得用户许可后如何在Facebook用户的墙上发帖?

时间:2014-05-05 07:05:44

标签: php facebook facebook-graph-api

是否有任何好的教程可以教授如何使用API​​发布在用户的墙上?这是流程:

  1. 用户将访问我的网站并点击文章末尾的发布到Facebook按钮。

  2. 他在Facebook上显示登录对话框,登录后他将允许我的申请代表他在墙上张贴。

  3. 授权后,他的共享链接将发布在他的墙上。

  4. 在未来的股票上,他不会被要求获得许可,因为他已经允许他代表他发布。因此,将来当他点击文章下的“发布到Facebook”按钮时,该项目将被发布到他的墙上,而无需打开Facebook登录对话框。

  5. 我在教程上搜索了很多,但没有找到符合我要求的任何内容。

    我是facebook API的新手,之前没有使用它。

    任何建议或教程链接? 谢谢!

3 个答案:

答案 0 :(得分:1)

我的代码可以帮助您将图片状态发布到用户的时间线。

用户授予您的应用权限后,您可能会收到一个名为' code' ,使用此代码,我们可以发布到用户的时间线。

$ 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;
}

希望它有所帮助.. !!

答案 1 :(得分:0)

您可以使用简单的facebook sharer URL:

https://www.facebook.com/sharer/sharer.php?u=YOURPAGEURL

YOURPAGEURL是您要分享的页面网址。希望这会有所帮助。

答案 2 :(得分:0)

您必须在您的应用上获得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