Manipulando fotos no facebook com sdk para php

Posted on junho 28, 2012. Filed under: Facebook, PHP | Tags:, , |

Introdução

Neste artigo vamos aprender algumas dicas sobre como manipular imagens/fotos no facebook através de uma app usando o sdk do PHP: upload e marcação de fotos, enviando fotos para fanpage e diretamente para dentro de álbums.

Para que você possa utilizar os scripts abaixo é preciso que você crie uma aplicação no facebook. Caso tenha dúvidas de como criar apps para o facebook, acesse meu artigo anterior que trata sobre desse assunto.

Publicando fotos no perfil do usuário

O script abaixo é um aplicativo do facebook que simplesmente publica fotos diretamente no perfil do usuário. Como não estamos especificando nenhum álbum, a foto é inserida dentro de um álbum especial que tem o mesmo nome do aplicativo que você criou no facebook. Caso o álbum não exista, ele será criado. Altere o appid e o secret code de acordo com a sua aplicação.

<?php
// incluir a lib fo facebook
require 'src/facebook.php';

// Cria a instancia da aplicacao, informando o appid e o secret
$facebook = new Facebook(array(
  'appId'  => 'XXXXXXXXXXXXXXX',
  'secret' => 'YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY',
));

// habilita suporte para upload de arquivos
$facebook->setFileUploadSupport(true);

// obtem o id do usuario
$user = $facebook->getUser();

if ($user) { // usuario logado
        try {
                // verifica se o usuario permitiou o aplicativo publicar fotos em seu perfil
                $permissions = $facebook->api("/me/permissions");
                if(!array_key_exists('publish_stream', $permissions['data'][0])) {
                    header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream")) );
                    exit;
                }

                // dados para envio da publicacao da foto
                $post_data = array(
                        "message" => "teste_" . time(),
                        "image" => '@' . realpath("douglas.jpg"), // localizacao da foto
                );

                // publica foto na timeline
                $data['photo'] = $facebook->api("/me/photos", "post", $post_data);
                echo "Foto publicada com sucesso!";

        } catch (FacebookApiException $e) {
                // tratamento de excecao
                echo($e);
                $user = null;
        }
} else {
        // usuario nao logado, solicitar autenticacao
        $loginUrl = $facebook->getLoginUrl();
        echo "<a href=\"$loginUrl\">Facebook Login</a><br />";
        echo "<strong><em>Voc&ecirc; n&atilde;o esta conectado..</em></strong>";
}

Alguns pontos a serem destacados no script acima:

  • A linha de código abaixo é obrigatória caso esteja fazendo upload de arquivos pela sua aplicação.
  • // habilita suporte para upload de arquivos
    $facebook->setFileUploadSupport(true);
    
  • Solicitar permissão publish_stream para que o aplicativo possa publicar fotos no perfil do usuário.
    // verifica se o usuario permitiou o aplicativo publicar fotos em seu perfil
    $permissions = $facebook->api("/me/permissions");
    if(!array_key_exists('publish_stream', $permissions['data'][0])) {
        header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream")) );
        exit;
    }
    
  • Publicando a foto. Um novo álbum será criado com o nome da aplicação no perfil do usuário.
  •                 // publica foto na timeline
                    $data['photo'] = $facebook->api("/me/photos", "post", $post_data);
    

Marcando (tagging) fotos

Através da Graph API do facebook é possível fazer marcação nas fotos publicadas pelo usuário diretamente ou através da aplicação. Você precisa do id da foto e do id do usuário que deseja marcar na foto. Além disso, você precisa requisitar a permissão user_photos e friends_photos para permitir que a aplicação marque as fotos do usuário.

  • Solicitando as permissões necessárias para fazer a marcação (publish_stream, user_photos, friends_photos)
  • // verifica se o usuario permitiou o aplicativo publicar e marcar fotos em seu perfil
    $permissions = $facebook->api("/me/permissions");
    if(!array_key_exists('publish_stream', $permissions['data'][0])
       ||  !array_key_exists('user_photos', $permissions['data'][0])
       ||  !array_key_exists('friends_photos', $permissions['data'][0])) {
           header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream, user_photos, friends_photos")) );
           exit;
    }
    
  • Marcando a foto. É necessário especificar a localização da marcação na foto. No exemplo abaixo, ficou 10% à partir do topo e 10% à partir da esquerda.
  • // publica foto
    $data['photo'] = $facebook->api("/me/photos", 'post', $post_data);
    
    // obter o id da foto publicada anteriormente
    $photo_id = $data['photo']['id']; 
    
    // dados do perfil do usuario
    // obter o id do usuario para marcar a foto
    $user_profile = $facebook->api('/me');
    
    // marcar a foto com posição 10% acima e 10% à esquerda
    $argstag = array('to' => $user_profile['id']);
    $argstag['x'] = '10';
    $argstag['y'] = '10';
    
    // realizando a marcacao
    $datatag = $facebook->api('/' . $photo_id . '/tags', 'post', $argstag);
    echo "Foto publicada e marcada com sucesso!";
    

Publicando fotos direto no álbum

Nos exemplos anteriores vimos como publicar fotos direto no perfil do usuário. As fotos serão publicadas em um álbum que contém o mesmo nome da aplicação do facebook. Porém, é possível especificar que a foto seja publicada diretamente em um álbum específico. O primeiro passo é já ter esse álbum criado e estar com o ID dele em mãos.

Obter o id do álbum é bem simples. Entre na área de Fotos do perfil, edite o álbum desejado e obtenha o id da URL aberta no navegador:

No caso acima, o id do álbum será: 2191499203549

Com o id do álbum em mãos, agora é só utilizar ele na chamada de publicação de fotos. Troque a linha abaixo:

$data['photo'] = $facebook->api("/me/photos", "post", $post_data);

por:

$data['photo'] = $facebook->api("/2191499203549/photos", "post", $post_data);

Publicando fotos em uma fanpage

Para quem não sabe, uma fanpage é uma página personalizada criada dentro do facebook. É uma maneira de divulgar o seu negócio, sua empresa, produtos, bandas, artistas, etc…

É possível publicar fotos diretamente na fanpage através de uma aplicação do facebook. O usuário usado na aplicação deve ser administrador da fanpage. Além disso ele deve permitir à aplicação publicar em sua página através da permissão manage_pages.

Estamos assumindo que você já tenha criado a sua fanpage. Portanto, o primeiro passo para poder publicar fotos nela, é obter o seu id. Abra a página da fanpage, clique em Editar Página -> Atualizar Informações. O id da fanpage estará na URL do navegador:

No caso do exemplo acima, o ID da fanpage ficou: 354256421309739

Vamos as próximas etapas:

  • Solicitando as permissões necessárias para publicar na fanpage (publish_stream e manage_pages)
  •         $permissions = $facebook->api("/me/permissions");
            if(!array_key_exists('publish_stream', $permissions['data'][0])
               ||  !array_key_exists('manage_pages', $permissions['data'][0])) {
    
                header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream, manage_pages")) );
                exit;
            }
    
    
  • Em seguida, obter o access_token da fanpage. Devemos informar o access_token na hora da publicação da foto. Para obter o token, precisamos informar o id da fanpage.
  • /* obter token */
    $fanpage_id = "354256421309739"; // id da fanpage
    $page_info = $facebook->api("/$fanpage_id?fields=access_token"); // solicitando o token
    $fanpage_token = $page_info['access_token']; // token
    
  • Finalmente, executamos a função para publicar a foto diretamente na fanpage.
  • $post_data = array (
          "message" => "teste_" . time(),
          "image" => '@' . realpath("douglas.jpg"),
          'access_token' => $fanpage_token,
    );
    
    $data['photo'] = $facebook->api("/me/photos", 'post', $post_data);
    echo "Foto publicada com sucesso na fanpage!";
    
    Ler Post Completo | Make a Comment ( 60 so far )

Criando aplicativos para Facebook usando SDK do PHP

Posted on junho 7, 2012. Filed under: Facebook, PHP | Tags:, , |

Introdução

Neste artigo vamos demonstrar como criar uma aplicação simples para o facebook usando a Graph API com o sdk do php. Vamos criar um Hello World de aplicação para facebook. Iremos presumir que a aplicação será hospedada em um servidor particular próprio.

Criando a App à partir do seu login

O primeiro passo é criar uma aplicação no site do facebook. Após criar a aplicação usando o seu perfil teremos o appId e o secret que iremos usar dentro do script php. Portanto, autentique o facebook com o seu usuário e acesse o link https://developers.facebook.com/apps.

Para inciar a criação da sua app, clique no botão + Criar Novo Aplicativo.

Informe o nome da sua aplicação no campo App Name e clique em continuar. Os outros campos, podem ficar em branco ou não selecionados. Deixe o campo Web Hosting não selecionado já que iremos hospedar nossa aplicação em um servidor próprio como comentanos no ínicio do artigo.

Na tela seguite, digite a verificação de segurança (Captcha) para continuar.

Caso esteja criando sua primeira aplicação dentro do seu perfil, o facebook irá solicitar um contato por telefone ou cartão de crédito para assegurar que você é realmente você. Use a opção por telefone informando o seu número de celular. O facebook irá enviar um SMS para o seu número com um código de verificação. Informe esse código de verificação na próximo passo requisitado pelo facebook. Pronto, agora você pode avançar na criação da sua aplicação.

Na tela seguinte você deverá informar os dados básicos para sua aplicação. Informe o domínio onde sua app estará hospedada no campo Site URL: da sessão Website with Facebook Login. Anote também o App ID e App Secret que usaremos dentro do nosso script php.

Criando o script PHP

Para desenvolver aplicações para o facebook em php, você precisa baixar o sdk para php. Isso pode ser feito no link abaixo: (baixar pacote zip)
https://github.com/facebook/php-sdk.

Descompacte o arquivo zip e copie a pasta src para o diretório raiz da sua aplicação. Neste momento, já estamos pronto para criar o script php.

O código abaixo é uma simples aplicação que realiza o login no facebook e imprime a foto e os dados do usuário logado. Ao acessar a página pela primeira vez, será solicitado a autenticação do facebook. Após autenticado, os dados e a foto serão exibidas.

<?php
// incluir a lib fo facebook
require 'src/facebook.php';

// Cria a instancia da aplicacao, informando o appid e o secret
$facebook = new Facebook(array(
  'appId'  => 'XXXXXXXXXXXXXXX',
  'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
));

// obtem o id do usuario
$user = $facebook->getUser();

if ($user) { // usuario logado
        try {
        // Obtem dados do usuario logado
        $user_profile = $facebook->api('/me');

        // exibe foto do usuario logado
        echo "<img src=\"https://graph.facebook.com/$user/picture\">";

        // printa os dados do profile do usuario logado
        print_r($user_profile);

        } catch (FacebookApiException $e) {
                error_log($e);
                $user = null;
        }
} else {
        // usuario nao logado, solicitar autenticacao
        $loginUrl = $facebook->getLoginUrl();
        echo "<a href=\"$loginUrl\">Facebook Login</a><br />";
        echo "<strong><em>Voc&ecirc; n&atilde;o esta conectado..</em></strong>";
}

Conclusão

A partir desse ponto você pode expandir sua aplicação facebook conforme deseja. Próximos artigos relacionados ao facebook virão. Boa sorte.

Avançando em seus aplicativos para facebook

Confira vários outros artigos sobre desenvolvimento para facebook no blog:
Artigos Facebook

Curso rápido e completo sobre desenvolvimento de aplicativos para facebook:
http://www.temporealeventos.com.br/?area=267-Criando-Aplicativos-para-Facebook-Usando-SDK-de-PHP-e-Javascript

Ler Post Completo | Make a Comment ( 31 so far )

Facebook App: Requisitando permissões pela API do PHP

Posted on maio 15, 2012. Filed under: Facebook, PHP | Tags:, |

Introdução

Criar aplicações para o facebook, dependendo do seu objetivo, pode requerer que o usuário autorize certas ações que sua aplicação irá executar em nome dele. Existem muitas informações sobre a API do facebook na internet que estão desatualizadas. Portanto, muitas vezes encontramos dificuldades para implementar funções consideradas básicas, como por exemplo, solicitar permissão do usuário para executar determinada ação. Venho por meio desse post exemplificar como requisitar permissões para o usuário.

Requisitando uma simples permissão

Quando sua aplicação precisa realizar uma determinada ação em nome do usuário, primeiramente é necessário que o usuário autorize essa ação. Por exemplo, caso deseje que sua aplicação publique fotos no perfil do usuário ou em algum album dele, você irá precisar que o usuário autorize essa ação para sua aplicação. Neste caso, no facebook, o nome dessa permissão é publish_stream. Uma lista de permissões disponíveis pelo facebook pode ser encontrado no seguinte link.

O exemplo abaixo mostra como fazer sua aplicação solicitar a permissão de publicação de fotos (publish_stream) para o usuário. Este exemplo já assume que você tenha criado uma aplicação no facebook.

<?php
require 'src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'xxxxxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
));

// permitir upload de fotos
$facebook->setFileUploadSupport(true);

// obtem usuario logado
$user = $facebook->getUser();

if ($user) {
        // usuario esta logado

        /* obtem as permissões atuais que usuário tem em relação a sua aplicação  */
        $permissions = $facebook->api("/me/permissions");

        /* verifica se o usuário já autorizou a publicação de fotos para a sua aplicação */
        if (!array_key_exists('publish_stream', $permissions['data'][0])) {
                /* solicita permissão */
                header( "Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream")) );
                exit;
        }

        echo "Pode publicar as fotos";

} else {
        // usuário não esta logado. Requisitar login do facebook.
        $loginUrl = $facebook->getLoginUrl();
        header("Location: $loginUrl");
        exit;
}

A aplicação irá solicitar essa permissão somente uma única vez. Após, não será necessário mais a aplicação solicitar essa permissão, a não ser que o usuário remova manualmente a permissão no seu perfil. Segue abaixo exemplo da tela de solicitação de permissão:

Requisitando vários permissões ao mesmo tempo

Pode acontecer que sua aplicação realize mais de uma operação no perfil do usuário. Neste caso, dependendo do que precise, será necessário solicitar vários tipos de permissões. Com o exemplo anterior, podemos solicitar somente uma única permissão por vez. Para facilitar o processo você pode incluir em uma mesma chamada a solicitação de todas permissões que necessita. Fazendo uma simples alteração no código conseguimos obter o resultado desejado:

/* verifica se o usuário já autorizou a aplicação para publicação de fotos/acessar os dados de email e os dados sobre você  */
$permissions = $facebook->api("/me/permissions");
if(! (array_key_exists('publish_stream', $permissions['data'][0])
      &&  array_key_exists('user_photos', $permissions['data'][0])
      &&  array_key_exists('user_about_me', $permissions['data'][0])
      &&  array_key_exists('email', $permissions['data'][0])
)) {

    /* solicitar as permissões  */
    header("Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream,user_photos,user_about_me,email")));
    exit;
}

Segue abaixo exemplo da tela de solicitação de várias permissões ao mesmo tempo:

Em breve mais dicas do facebook pela api do PHP 😉

Ler Post Completo | Make a Comment ( 18 so far )

Próximas Entradas »

Liked it here?
Why not try sites on the blogroll...

%d blogueiros gostam disto: