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!";
    

    Make a Comment

    Deixe uma resposta para souzapsl Cancelar resposta

    Preencha os seus dados abaixo ou clique em um ícone para log in:

    Logotipo do WordPress.com

    Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

    Foto do Google

    Você está comentando utilizando sua conta Google. Sair /  Alterar )

    Imagem do Twitter

    Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

    Foto do Facebook

    Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

    Conectando a %s

    60 Respostas to “Manipulando fotos no facebook com sdk para php”

    RSS Feed for Pasqua Tecnologia Comments RSS Feed

    que post maravilhoso, muito bem explicado. parabéns

    Fala Cara, legal esse post hein!?!? Usaria essa base para conseguir personalizar a foto de um usuário? Exemplo, o cara entra na aplicação e escolhe uma imagem que virá em cima da imagem atual dele de exibição, algo do tipo, “Rock in Rio Eu Fui!”

    Olá Fabio, não é possível alterar a foto do perfil do usuário pelo sdk por questões de segurança. Veja o link abaixo. Tem algumas alternativas.. mas não existe uma forma automática.
    http://stackoverflow.com/questions/1648859/can-i-set-a-users-profile-image-using-the-facebook-api

    Parabéns mano!
    Bastante informação útil. Já favoritei seu tópico!

    Olá Douglas,
    Primeiramente, parabéns pelo POST. Se possível gostaria de sua ajuda, consegui enviar a foto pra fanpage com o script php, porém a foto só aparece para o usuário que enviou/admin da fanpage e não para os demais usuários. Sabe me dizer o que pode ser?

    Olá Ezequiel,

    Para que o usuário receba as fotos na sua linha de tempo é preciso que ele curta a fanpage e faça uma navegação nas fotos publicadas. Após o usuário demonstrar “interesse” na fanpage, ele irá começar a receber as atualizações na sua linha de tempo. Mesmo assim, o facebook não irá enviar todas publicações, mas somente aquelas que acha relevante para o usuário.

    Obrigado pela resposta. Mas o que está acontecendo é que mesmo um usuário que já curtiu não está visualizando as fotos, ou seja, se ele acessar diretamente a fanpage por exemplo: https://www.facebook.com/pages/Tomazinisistemas/110001802481920?ref=hl irá aparecer somente 1 foto no álbum, pra mim que sou o administrador da fanpage aparece todas as outras que enviei via script php.

    e se eu enviar a foto direto pela fanpage aparece para os outros usuários, só não aparece se eu enviar pelo script php,

    Veja Douglas, eu como administrador da página: http://www.tchat.com.br/admin.png

    um usuário normal que acessa a fanpage: http://www.tchat.com.br/normal.png

    Se eu enviar a foto diretamente pela fanpage aparece tanto pra mim quando para os outros usuários que acessarem a fanpage, e o que eu queria é que as fotos enviadas pelo script php também fossem visualizadas pelos demais usuários.

    Ezequiel, não tive esse problema por aqui. Aconselho que entre nas configurações de permissão de sua fanpage (Editar Página -> Gerenciar Permissões) e tente mudar os parâmetros. Veja se algum faça efeito.
    Boa sorte.

    Douglas, parabéns pelo trabalho. Artigos bem explicados. Estou começando a testar estas aplicações e gostaria de publicar uma foto de uma URL específica e não consegui. Alguma dica? Veja o erro.

    Warning: curl_setopt_array() [function.curl-setopt-array]: open_basedir restriction in effect. File() is not within the allowed path(s): (/home/hulahulabrazil/:/tmp:/usr/local/lib/php:./) in /home/hulahulabrazil/www/facebook/src/base_facebook.php on line 936
    CurlException: 3: No URL set!

    Fabio, Obrigado pelo contato.

    O problema parece ser com uma configuração no php.ini do seu ambiente. É a diretiva open_basedir que esta bloqueando o acesso ao arquivo na URL.
    O open_basedir limita os locais onde sua aplicação pode acessar arquivos, no caso somente /home/hulahulabrazil/, /tmp, /usr/local/lib/php!

    Ou você coloca a imagem que deseja publicar em um desses diretórios ou você modifica o open_basedir no php.ini para remover a limitação. Isso caso você possua permissões para isso.
    Boa sorte!

    Opa, tudo bem? Obrigado por compartilhar conhecimento.
    Estou desenvolvendo um app no face (um game em Flash) onde o usuário fará uma foto de si mesmo e eu guardarei em alguma pasta do servidor. Gostaria de saber como ficaria essa linha

    “image” => ‘@’ . realpath(“douglas.jpg”), // localizacao da foto

    para este caso.
    Preciso manter o @ ou realpath ou simplesmente insiro entre aspas a url absoluta da imagem?
    Obrigado

    Olá Fabio, tudo joia! Obrigado pelo contato.

    Você precisa manter o @ no início do caminho da imagem de qualquer forma.

    Já o realpath não é obrigatório! Ele foi usado para gerar o caminho absoluto onde a imagem esta localizada no servidor.
    Portanto, você pode usarda seguinte forma:

    “image” => “@/var/www/upload/imagem.jpg”,

    Vlw Pasquati, acabei fazendo como tava, é até mais simples mesmo. muito grato

    Pasqua, mais uma dúvida. Na verdade ajuda.
    Resolvi as questões de publicação e tudo mais, porém me pintou outra necessidade. Precisaria fazer isso descrito em seu post, mas com a biblioteca em javascript. Explico:
    O game é em Flash e ao final faço uma foto do usuário… essa foto poderá ser compartilhada no mural dele. Disparo uma ação do flash ExternalInterface para acionar o js. Já fiz isso para enviar mensagem e tb achei algumas coisas na net, mas todos formatados como mensagem estilo foto pequena na esquerda+titulo+descrição ao lado da miniatura, porém preciso que seja nesse formato que ensinou aqui… imagem grande com descrição, como sendo uma imagem postada. Tem alguma luz?
    obrigado

    Resolvi com o PHP mesmo, usei POST e seu código externo. abs

    Legal que funcionou Fábio! Boa sorte! Abs!

    O primeiro codigo seria o index
    Os codigos que estão dentro de “Marcando (tagging) fotos” seriam dentro do index tbm ?

    oi Gustavo,

    Sim, os códigos em “Marcando (tagging) fotos” também seriam dentro do mesmo código inicial (index)
    É uma continuação do primeiro bloco de código.

    A marcação da foto é feito logo depois da linha:

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

    Além disso é necessário substituir a parte de solicitação de permissões no primeiro código:

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

    por:

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

    Eu incomodando de novo ! Deu certo, ta postando direito e tals, mas não está marcando a foto ! Sabe informar o erro ?

    http://mecutuque.net76.net/APP/a

    Eu incomodando de novo ! Deu certo, ta postando direito e tals, mas vc sabe como marcar um amigo ?? Queria marcar meus amigos nas fotos ! Desconsidere as duas ultimas perguntas

    É possível eu postar uma imagem com link externo? Quando clicar na minha foto ele ir para uma página externa ao invez de abrir a foto?

    Olá Walfredo,

    Verifique meu outro post sobre o assunto: Facebook php sdk, postando mensagens no mural do usuário (Mais especificamente na seção Linkando uma imagem no post).

    É criado um link externo da imagem no post (Não é feito o upload da imagem para o facebook)! No artigo manipulando fotos no facebook com sdk para php a imagem é inserida dentro de um álbum dentro do facebook. Nesse método, pelo que eu sei, não há uma forma de direcionar o usuário para um link externo.

    Boa sorte!

    Como faço para sobrepor a imagem do perfil a imagem que escolhi para ser publicada ? é possível ?

    Olá Jerfeson, Não existe uma forma automática de sobrepor a imagem do perfil através da API do Facebook por questões de segurança.
    Boa sorte!

    Então existe alguma maneira de alternar a foto publicada com um OU ? por exemplo cada vez que abrir o app, uma imagem diferente ser publicada ?

    oi Jerfeson,

    Sim é possível publicar uma foto no seu mural do usuário sempre que ele acessar o seu app. É só inserir uma rotina abaixo no script que é executado quando ele acessa sua app:

    // 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);
    

    É só inserir a imagem desejada no lugar do “douglas.jpg”. A imagem ser gerada aleatoriamente se desejar.

    Boa sorte!

    ola pasquati muti bom o blog,gostaria que me tirasse uma pequena duvida,pr exemplo nessa string aki
    // dados para envio da publicacao da foto
    $post_data = array(
    “message” => “teste_” . time(),
    “image” => ‘@’ . realpath(“douglas.jpg”), // localizacao da foto
    de onde o sdk vai tira a foto? tem como ele escolher uma foto aleatoriamente entre varias e adicionar o nome e a foto do usuario que estiver usando o meu app?
    tenho o app todo pronto só está faltando a parte dele buscar uma imagen aleatoria add o nome e imagem do perfil da pessoa e postar na linha do tempo do usuario..
    se puder me ajudar eu agradeço

    Olá Paulo,

    O realpath pede a localização da foto em disco. Normalmente você executa o php em um servidor. Portanto, o realpath esta procurando uma arquivo que esta hospedado no servidor. Caso você esteja fazendo uma aplicação que permite o usuário escolher uma foto, primeiro você terá que fazer com que o usuário faça o upload da foto para o servidor, para depois publicá-la no facebook.

    No campo message você pode incluir as informações do usuário. As informações do message serão postadas junto com a imagem.

    Boa sorte!

    Olá, por vários dias venho pesquisando e nunca e em lugar nenhum encontrei alguma coisa tão rica em detalhes… Parabéns..

    Gostaria de saber algumas coisas se puder me ajudar, no caso tenho um aplicativo que pede a permissão do usuario e o grava em um banco de dados, onde posso publicar posteriormente… Na hora que ele aceita o aplicativo, ele automaticamente posta na time dele um postwall, gostaria que tambem pudesse publicar uma determinada foto, e fizesse uma marcação de 10 usuários alto maticamente e randomicamente…

    Simplificando é preciso incluir no meu codigo uma postagem de foto na time do meu usuario cadastrado e que essa foto marque 10 amigos aleatoriamente… no caso ele teria que pegar as infos do meu banco como o token por exemplo…

    Muito obrigado!

    Olá Lennon,

    Agradeço pelo feedback. Obrigado!

    Sim, é possível automatizar a publicação na timeline do usuário através de access token. Já cheguei até fazer alguns testes por aqui.
    Provavelmente teremos publicações sobre esse mecanismo no blog em breve.

    Enquanto isso, caso queira estudar mais sobre o assunto, aconselho os seguintes links:

    http://developers.facebook.com/docs/concepts/login/access-tokens-and-types/
    https://developers.facebook.com/docs/howtos/login/server-side-login/

    Boa sorte!

    Boa tarde, amigo teri como marcar amigos ao inves de marcar apenas a pessoa que esta publicando? Obrigado

    Boa tarde Jeferson,

    Sim, é possível marcar outros usuários. Para isso, você irá precisar obter o ID do usuário que deseja marcar.
    Para pegar o ID de um usuário:

    http://graph.facebook.com/nome_do_usuario

    No código, altere o $ID_DO_USUARIO para o ID do usuário que deseja marcar:

    // marcar a foto com posição 10% acima e 10% à esquerda
    $argstag = array('to' => $ID_DO_USUARIO);
    $argstag['x'] = '10';
    $argstag['y'] = '10';
    
    // realizando a marcacao
    $datatag = $facebook->api('/' . $photo_id . '/tags', 'post', $argstag);
    echo "Foto publicada e marcada com sucesso!";
    
    

    Lembre-se que pela API é possível marcar quantos usuários desejar.

    Boa sorte!

    Cara, desculpa incomodar mas é o seguinte, eu consigo publicar a foto no meu perfil porem se outra pessoa tenta acessar meu link exemplo: http://jeferson.lucianocasale.com/publicaFoto.php tenta acessar ocorre um erro e não publica a foto….

    e a respeito da marcação é o seguinte.. esto fazendo um site de balada e ai a pessoa pode olhar as fotos e publicar no album dela se quiser porem gostaria que ela marcasse pessoas…. se ela quiser..
    acho que isso ja não é possivel né?

    Obrigado

    Olá Jeferson,

    Em relação ao erro, aconselho verificar na propriedades da sua aplicaçãno, em https://developers.facebook.com/, se o campo Site URL, Website with Facebook Login esta configurado corretamente para
    http://jeferson.lucianocasale.com !

    Para testar na sua conta novamente, acesse Configurações de Privacidade -> Aplicativos e exclua da lista o seu aplicativo. Faça logoff, reinicie o navegador e teste novamente.

    Em relação a marcação, o usuário poderá fazer a marcação das fotos somente após terem sido publicado no facebook. Ou acessando o álbum e marcando ou através de um script conforme esta descrito no artigo.

    Boa sorte!

    Boa noite, deu certo era um problema na aplicação mesmo, criei uma outra e deu certo… agora como um usuario do site poderia marcar os amigos que ele quisesse? ou seja tem uma foto dele com mais 2 amigos e ele queira marca-los? como ele poderia fazer isso? nem todos usuarios sabem o que significa os ID

    Obrigado

    Boa noite Jeferson,

    Na sua aplicação, você poderia ter a opção do usuário colocar os nomes dos amigos que ele deseja marcar na foto. Via API, você faria uma busca dos nomes que ele digitou, na lista de amigos dele, obteria o ID desses amigos e marcaria eles na foto.

    Exemplo de como obter a lista de amigos do usuário:

    $friends = $facebook->api('/me/friends');
    

    Outra opção de obter os dados dos amigos, é através de FQL. Veja um exemplo nesse blog:
    http://tech.ldg.me/2011/10/fql-query-info-get-facebook-friends-by-first-letter

    Veja um exemplo abaixo de como rodar FQL no sdk do PHP:
    http://css.dzone.com/news/using-facebook-php-sdk-run-fql

    Acho que esse poderia ser um caminho.

    Boa sorte!

    Problema que para obter a lista de amigos completa demora um bom tempo né

    Obrigado pela, ajuda, consegui resolver usando o FQL assim listo todos amigos do usuario pego o uid e o name e assim com checkbox a pessoa pode escolher os amigos que ela quer marcar
    vlww

    Boa tarde, você mostrou como publicar a foto no perfil, porem se o usuario não tem o aplicativo permitindo o envio de foto ao seu perfil ele faz a solicitação. ate ai beleza, ai ele aceita mas a foto não é publicada e sim so depois que ele tenta novamente publicar a foto.. você sabe me dizer como fazer para que a pessoa consiga publicar logo da primeira vez alias logo depois que ela aceite a permissão? é que no caso estou passando os valores via post e acho que quando ele é redirecionado para a solicitação os dados são perdidos né?

    Olá Jeferson,

    Tente fazer o seguinte. No script de publicação, identifique o seguinte código: (No final do script):

    // 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>";
    

    E troque por:

            // usuario nao logado, solicitar autenticacao
            $loginUrl = $facebook->getLoginUrl();
            header("Location: " . $loginUrl);
            exit;
    

    Boa sorte!

    Olá,
    tinha uma aplicação rodando com SDK e publicando no meu mural e de todos os meus amigos. O facebook me bloqueou e também apagou minha aplicação. Depois de confirmar diversos amigos, ele voltou a me liberar acesso a minha página, mas minha aplicação foi apagada. Recriei a aplicação, e novamente estou postando as notícias do meu portal, mas agora só posta na minha linha do tempo. Todos meus amigos postam na minha, mas a minha aplicação só posta na minha.
    Abs,
    Luiz Cláudio

    Olá Luiz,

    Após ter re-criado sua aplicação, seus amigos precisam acessá-la e permitirem que ela possa publicar na linha do tempo deles.
    Essa permissão já foi concedida por eles ? Normalmente para a aplicação poder publicar na linha do tempo deles é necessário aceitar a permissão publish_stream!

    Boa sorte!

    Olá Pasquati,
    esta é uma nova função nas aplicações que o facebook passou adotar a poucos dias! O compatilhamento das notícias de forma pública sempre foi feita pela aplicação anterior de forma automática como se estivesse escrevendo um post no meu mural!! Entendo que quando algum aceita sua amizade, qualquer coisa que um amigo compartilhar, aparece na minha página inicial… da mesma forma vinha acontecendo, mas automáticamente pela aplicativo, compartilhadno uma notícia como se fosse um post que eu criasse na minha página… meu aplicativo não é um jogo, ou algo parecido como data de aniversário que precisamos aceitar, é apenas um sistema de compartilhamento de notícias… considero isso apenas um compartilhamento de uma informação…
    Att,
    Luiz

    Olá, Pasquati!
    Mto bacana este post…
    Vou ter esse app on line à disposição de várias pessoas para logar e postar.
    Percebi que após fazer o login, se eu voltar na página, mesmo tendo feito logout do face, a página continua postando várias fotos no meu álbum.
    É possível postar a foto e fazer um logout para o próximo usuário repetir o processo?
    Obrigada 😉

    Olá Marta,

    Na verdade, o que você precisa fazer é criar um controle para não postar mais no mural dos usuários que já acessaram o aplicativo uma vez. Ou criar alguma regra para postar algo diferente quando um usuário acessar sua página novamente. Mas isso depende somente da sua programação.

    Uma forma de identificar usuários recorrentes é armazenar o ID dele em uma base de dados local quando ele fizer o acesso pela primeira vez. Caso o usuário acessar sua página novamente, basta verificar se ele é recorrente ou não, verificando o ID dele contra a lista de IDs guardados na sua base local.

    Para obter o ID do usuário no facebook é simples:

    // obtem o id do usuario
    $user_id = $facebook->getUser();
    
    if ($user_id) { // usuario logado
    }
    

    Boa sorte

    Otimo artigo… me ajudou muito, só que pintou algumas dúvidas.
    Como faço para manter a autorização e toda vez que ele estiver no site (mesmo entrando sem usar a conta Facebook) quando ele postar eu possa enviar a postagem para o face da pessoa que autorizou anteriormente?

    Um exemplo disso é o twitter, Instagram, entre outros que quando a gente posta ele posta automaticamente em nossa timeline.
    É um token que devo guardar em um db e se for como eu chamo ele automaticamente quando a pessoa entrar?

    Olá Daniel,

    Para realizar a postagem no mural do usuário de forma offline, você precisa informar o access token do aplicativo. Outra informação importante é guardar o ID do usuário do facebook em sua base de dados, quando ele realizar o primeiro acesso na sua aplicação.

    No artigo abaixo tem um exemplo de como realizar essa postagem:
    Facebook sdk, publicação offline no mural do usuário com access token

    Lembre-se que estamos falando de postagem no feed de notícias o usuário. No caso de publicação de fotos no perfil do usuário, você precisa obter o access token do usuário e não do aplicativo. Perceba que existe uma diferença entre publicação no feed de notícias e upload de fotos.

    Esses aplicativos que postam automaticamente na timeline como você citou, são postagem de feed de noticias e não de upload de fotos. O artigo que mencionei acima trata exatamente desse tipo de postagem.
    Para mais detalhes sobre parâmetros que pode usar na postagem, aconselho a verificar meu outro artigo:

    Facebook php sdk, postando mensagens no mural do usuário

    Boa sorte!

    Eu gostei muito do post!! Ajudou muito mesmo….mas tenho uma duvida e não consigo encontrar resposta no sr. google 😀
    Gostaria de marcar a foto publicada diretamente na fanpage. Eu adicionei a parte // obter o id da foto publicada anteriormente até a parte de realizando marcação e coloquei entre $data[‘photo’] e o echo. A imagem está subindo para o album e marcando meu nome nela, mas da a seguinte mensagem no app: OAuthException: An unknown error has occurred.

    E também não recebe notificação (isso é o de menos).
    Será que poderia me ajudar a solucionar este problema?

    Obrigado e parabéns!

    Olá Guilherme,

    Legal que o post te ajudou.

    Caso a marcação esteja sendo realizada, provavelmente a exception gerada pelo facebook é por outro motivo.
    Tente me enviar mais detalhes sobre o erro (a mensagem completa do exception gerado).

    Boa sorte!


    Where's The Comment Form?

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

%d blogueiros gostam disto: