Php 就像一张照片上的按钮

Php 就像一张照片上的按钮,php,facebook-graph-api,photo,Php,Facebook Graph Api,Photo,你能告诉我如何在我的网站(php)中使用“喜欢”按钮来喜欢facebook上的页面照片吗 我知道我必须使用GRAPH API,并且必须通过HTTP向/likes发送帖子。。但是我不知道如何用PHP代码实现它 有人举个例子吗 谢谢你只要你从用户那里获得了发布流权限,你就可以喜欢你需要的任何照片。如果您试图将照片用作页面,请确保您拥有该页面的访问令牌(通过用户帐户上的/accounts连接获得) 一旦您拥有了访问令牌,类似的操作就非常简单,只需向一个类似以下内容的URL发出HTTP POST: ht

你能告诉我如何在我的网站(php)中使用“喜欢”按钮来喜欢facebook上的页面照片吗

我知道我必须使用GRAPH API,并且必须通过HTTP向/likes发送帖子。。但是我不知道如何用PHP代码实现它

有人举个例子吗


谢谢你

只要你从用户那里获得了
发布流
权限,你就可以喜欢你需要的任何照片。如果您试图将照片用作页面,请确保您拥有该页面的
访问令牌
(通过用户帐户上的
/accounts
连接获得)

一旦您拥有了访问令牌,类似的操作就非常简单,只需向一个类似以下内容的URL发出HTTP POST

https://graph.facebook.com/PHOTO_ID/likes?access_token=ACCESS_TOKEN
照片ID=Facebook中的照片ID

访问令牌=使用发布流权限从Facebook获得的访问令牌

更新


基于PHP的示例代码


法比奥这里是我能够使用的php文章片段。该代码段包括一个curl,用于获取应用程序访问令牌,以及一个api post,用于喜欢一个对象,在本例中是我的应用程序上的一个post

  • 示例帖子在这里:显示了喜欢的帖子

  • Like页面在这里:应该返回用户是否喜欢,或者如果未连接,则返回登录。
获取应用程序访问令牌。 在url中查找postid参数,然后查找liking id
您可以通过为登录url构建一个perm数组来获得权限。下面我请求权限范围内的读取流、发布流、发布操作、脱机访问

注意:注销url需要应用程序访问令牌

    <?php
    $url = (!empty($_SERVER['HTTPS'])) ? 'https://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
        require './src/facebook.php';
    $facebook = new Facebook(array(
      'appId'  => 'APPID',
      'secret' => 'APP-SECRET',
      'cookie' => true, // enable optional cookie support
    ));
    $user = $facebook->getUser();
    if ($user) {
      try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');

            //$pageInfo = $facebook->api('/'.$pageid.'?access_token='.$_SESSION['fb_112104298812138_access_token].');
            //$pageInfoUser = $user_profile[id];
      } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
      }
    }
    /*  */
    if ($user) {
      $logoutUrl = $facebook->getLogoutUrl();
    } else {
    $params = array(
      scope => 'read_stream,publish_stream,publish_actions,offline_access',
      redirect_uri => $url
    );
      $loginUrl = $facebook->getLoginUrl($params);
    }
    $access_token = $_SESSION['fb_135669679827333_access_token'];

    ?>
<?php
        if(!$user){
    echo ' : <a href="'.$loginUrl.'" target="_self">Login</a>  ';
    }else{
        echo '<a href="'.$logoutUrl.'?'.$app_access_token.'" target="_blank">Logout</a>';
        }
?>

我还需要一个php sdk的简单示例,如果我在发布示例之前编写了一个,我会发回。“我将为cURL和php编写此脚本。”@Fabio-我还需要一个类似脚本的示例。如果一个没有及时发布,我会写一个。“可能是今天。”谢谢你,我怎样才能获得PHP网站的发布流?@Frazell Thomas你能发布PHP代码来发布帖子吗?我也有同样的问题,我只想看到一个示例和完整的curl代码片段或php post脚本。除了Facebook文档中的复制粘贴信息之外,我什么都不知道。@ShawnECarter我不知道如何使用PHP(我是.NET开发人员),但我会看看是否能找到一个关于在PHP中执行HTTP POST的片段。@FabioCardoso我建议您查看有关如何请求扩展权限的信息。谢谢Frazell,我能够使用if($\会话)['fb\U 135669679827333\u access\u token']{$pageLike=$facebook->api('/'.$posted.'/likes?'.$app\u access\u token.&method=post','post');}在尝试将类似对象发布到图形之前,我已将会话打包,以确保用户已登录并连接。我有问题。我想对facebook页面中的照片(而不是个人资料)执行类似按钮那么..我必须更改的值是什么?(对不起,我是一个noob)我不理解这一点:$\u SESSION['fb\u 135669679827333\u access\u token',我在我的站点中建立了一个$\u SESSION(用户必须登录才能参与)所以..目标是获得正确的访问令牌?另一件事,“postid”是什么?这个值在哪里?抱歉,Fabio,该脚本将适用于任何对象id,而不仅仅是页面。在我发布的示例链接中,类似的链接指向墙柱和照片。如果post id“在我的情况下”是动态的,则该值为。如果($_GET['postid']){}我正在将url中的id作为参数传递。http://any.com?postid=135669679827333_151602784936066当用户未连接到应用程序时,会话或$USER会阻止页面尝试喜欢该对象。“如果未连接,将抛出错误”好的,现在我明白了一点。所以..我必须获得照片id才能将其传递到url中,然后是:$pageLike=$facebook->api('/'.$postid.'/likes?access_token='.$access_token.&method=post','post');这样做是为了喜欢它,对吗?当我尝试你的代码时,我在点击“login”后会出现这个错误:API错误代码:191 API错误描述:指定的URL不属于应用程序错误消息:无效的重定向uri:O URL indicato nãOépermitido pela configuraãO da AplicaãO。是否可以将我链接到此测试代码。如果代码所在的页面不是应用程序设置中使用的域,则会引发此错误。或者如果你喜欢不属于应用程序的对象,你需要使用用户访问令牌。我已经调试过了,URL重定向不正确。现在没事了,tyawesome-尽管需要的代码数量有限,但这实际上很难实现。在示例中,我用php 5检测当前URL进行重定向,这在你的c语言中可能不起作用如果没有添加url,则ase.PHP-SDK应该自动检测url。为什么不这样做:$access\u token=$facebook->getAccessToken();而不是$access\u token=$\u SESSION['fb\u 135669679827333\u access\u token']?
function GetCH(){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT_MS,20000);
if(substr($url,0,8)=='https://'){
    // The following ensures SSL always works. A little detail:
    // SSL does two things at once:
    //  1. it encrypts communication
    //  2. it ensures the target party is who it claims to be.
    // In short, if the following code is allowed, CURL won't check if the 
    // certificate is known and valid, however, it still encrypts communication.
    curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_ANY);
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
}
$sendCH = curl_exec($ch);
curl_close($ch);
return $sendCH;
};
$app_access_token = GetCH();   
  if($_GET['postid']){
  $postid = $_GET['postid'];
  }else{
  $postid = '135669679827333_151602784936066';
  }

    if($user){
 $pageLike = $facebook->api('/'.$postid.'/likes?access_token='.$access_token.'&method=post', 'POST');
}
    <?php
    $url = (!empty($_SERVER['HTTPS'])) ? 'https://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
        require './src/facebook.php';
    $facebook = new Facebook(array(
      'appId'  => 'APPID',
      'secret' => 'APP-SECRET',
      'cookie' => true, // enable optional cookie support
    ));
    $user = $facebook->getUser();
    if ($user) {
      try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');

            //$pageInfo = $facebook->api('/'.$pageid.'?access_token='.$_SESSION['fb_112104298812138_access_token].');
            //$pageInfoUser = $user_profile[id];
      } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
      }
    }
    /*  */
    if ($user) {
      $logoutUrl = $facebook->getLogoutUrl();
    } else {
    $params = array(
      scope => 'read_stream,publish_stream,publish_actions,offline_access',
      redirect_uri => $url
    );
      $loginUrl = $facebook->getLoginUrl($params);
    }
    $access_token = $_SESSION['fb_135669679827333_access_token'];

    ?>
<?php
        if(!$user){
    echo ' : <a href="'.$loginUrl.'" target="_self">Login</a>  ';
    }else{
        echo '<a href="'.$logoutUrl.'?'.$app_access_token.'" target="_blank">Logout</a>';
        }
?>