Dicas para testar aplicativos para facebook durante o desenvolvimento

Posted on abril 18, 2013. Filed under: Facebook, PHP | Tags:, , |

Introdução

Neste artigo vamos aprender algumas dicas importantes para usarmos durante a fase de desenvolvimento do seu aplicativo facebook. Tópicos:

  • Fazendo com que o aplicativo seja visível somente para contas de desenvolvedores
  • Modificando a privacidade de publicação no feed de notícias e de fotos
  • Criando usuário de teste de aplicativos
  • Alterando a visibilidade da sua fan page
  1. Fazendo com que o aplicativo seja visível somente para contas de desenvolvedores do aplicativo
  2. Ative a opção Sandbox Mode na configuração de seu aplicativo para que ele fique visível somente para contas de desenvolvedores do seu aplicativo. Veja figura abaixo: (O aplicativo ficará visível somente para seus administradores e desenvolvedores)

    ScreenShot097

    PS: Não se esqueça de desabilitar essa opção quando for publicar seu aplicativo em produção

  3. Modificando a privacidade de publicação no feed de notícias e de fotos
  4. Quando você realiza uma publicação no seu feed de notícias ou de uma foto através da API do facebook, por padrão, essa publicação fica visível para todos usuários. Isso pode ser um incomodo durante a fase de desenvolvimento do seu aplicativo. Para ajudar nesse problema, você pode alterar a privacidade da publicação, fazendo com que ela seja visível somente para o seu usuário. Isso pode ser alcançado através da configuração do parâmetro privacy. Veja exemplo abaixo:

    $feed_data = array(
        "message" => "Youtube",
        "name" => "Site do Youtube", 
        "link" => "http://www.youtube.com", // link da publiccao
        "caption" => "www.youtube.com",
        "privacy" => "{'value':'SELF'}",
    );
     
    // publica foto na timeline
    $dados = $facebook->api("/me/feed", "post", $feed_data);
    

    Somente você irá visualizar a publicação. Veja na figura abaixo a indicação que mostra a visibilidade da publicação:

    ScreenShot098

    Você pode usar o parâmetro privacy também na publicação de fotos no perfil do usuário. Veja exemplo:

    // dados para envio da publicacao da foto
    $post_data = array(
    	"message" => "Fiquei Legal nessa foto",
    	"privacy" => "{'value':'SELF'}",
    	"image" => '@' . realpath("minha-foto.jpg"), // localizacao da foto
    );
    
    // publica foto na timeline
    $data['photo'] = $facebook->api("/me/photos", "post", $post_data);
    

    Para maiores informações sobre como usar o parâmetro privacy, acessar o link:
    https://developers.facebook.com/docs/reference/api/privacy-parameter/

  5. Criando usuário de teste de aplicativos
  6. Usuários testes do facebook são contas especiais, invisíveis para usuários normais, criadas com objetivo de testar à integração com aplicativos. Você pode usar usuários testes tanto manualmente como de forma automatizada. O facebook permite à criação de até 2000 usuários testes para cada aplicativo. Usuários testes tem algumas limitações em relação à usuários normais. Aconselho a analisar os detalhes de acordo com o link abaixo:

    https://developers.facebook.com/docs/test_users/

    Para criar usuários testes, edite o aplicativo desejado, entrando no link https://developers.facebook.com/apps, acessando e editando o seu aplicativo.

    No menu lateral, clique na opção Privilégios de Desenvolvedores e identifique a àrea Test Users. Veja figura abaixo:

    ScreenShot101

    Para criar novos usuários testes, clique no botão Criar. Escolha o número de usuários testes que deseja criar. Caso desejar, já marque a opção para que usuário já autorize seu aplicativo. Veja Figura:

    ScreenShot102

    Após criado o usuário teste, você pode alternar para a conta dele de forma manual clicando no link Alternar para. Você tem também a opção Modify caso queira realizar mais operações com os usuários criados: (Removê-los, criar conexões de amizades entre eles, adicioná-los em outros aplicativos que você tem criado). Veja figuras:

    ScreenShot103

    ScreenShot104

    Você pode adicionar usuários teste no seu aplicativo de forma dinâmica também, veja como através do link abaixo:
    https://developers.facebook.com/docs/test_users/

  7. Alterando a visibilidade da sua fan page
  8. Aplicativos para facebook podem interagir com fan pages de várias formas. Caso esteja trabalhando com uma fan page nova, que ainda esta em fase de “desenvolvimento” é interessante manter essa fan page oculta, até que você finalize todos os detalhes para poder publicá-la.

    Existe uma opção na configuração da fan page que mantém ela oculta. Para habilitar a opção, primeiramente, clique em Editar Página e em seguida, Editar Configurações/Editar Permissões. Veja Figura:

    ScreenShot099

    Com o menu Gerenciar Permissões selecionado, identifique a opção Página não publicada, habilite ela e clique em Salvar Alterações. Veja figura abaixo:

    ScreenShot100

    Pronto, neste momento, sua fan page já esta oculta.

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

Facebook sdk, publicação offline no mural do usuário com access token

Posted on março 26, 2013. Filed under: Facebook, PHP | Tags:, , , , , , |

Introdução

Neste artigo vamos aprender como realizar publicações no mural do usuário mesmo o usuário estando offline na sua aplicação do facebook. A publicação é feita no feed de notícias, ficando disponível para todos amigos.

Para que seja possível publicar no mural do usuário offline, vamos precisar dos seguintes procedimentos:

  • É necessário que o usuário tenha acessado sua aplicação em algum momento e ter fornecido a permissão de publicação chamada publish_stream.
  • Guardar o identificador do usuário do facebook em nosso banco de dados.
  • Gerar e armazenar o access token do nosso aplicativo.

Com posse desses dados, podemos seguir adiante no nosso script de publicação offline.

Primeiro, vamos a um exemplo simples de como obter o ID do usuário no facebook e solicitar a permissão publish_stream. Depois veremos como obter o access token do seu aplicativo e por final, um script que demonstra como fazer a publicação no mural do usuário com access token.

Solicitando permissão de publicação e obtendo o ID do facebook

Em um primeiro instante, o usuário precisa acessar nossa aplicação e fornecer a permissão publish_stream. Faça essa implementação em seu aplicativo de acordo com suas próprias regras. Segue abaixo um script simples que realiza as operações que necessitamos. Utilize-o adaptando de acordo com sua necessidade.

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

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

$user_id = $facebook->getUser();

if ($user_id) { // usuario logado
	// solicitar permissao
	try {
		$permissions = $facebook->api("/me/permissions");
		if(! (array_key_exists('publish_stream', $permissions['data'][0])
		)) {
			header("Location: " . $facebook->getLoginUrl(array("scope" => "publish_stream")));
		    	exit;
		}
        } catch (FacebookApiException $e) {
                error_log($e);
                $user = null;
        }
	//
	// $user_id e o id do usuario no facebook
	// salvar o ID do usuario em banco
	echo $user_id;

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

Mais detalhes de como solicitar permissões pelo aplicativo, acessar meu aritgo Facebook App: Requisitando permissões pela API do PHP

Obtendo o access token do seu aplicativo

Para que seja feita a publicação no mural do usuário com ele estando offline de seu aplicativo, é necessário termos em mão o access token do nosso aplicativo.

Para gerar o access token é simples, basta acessar a URL abaixo, substituindo os campos YOUR_APP_ID e YOUR_APP_SECRET pelos respectivos dados do seu aplicativo.

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&grant_type=client_credentials

A resposta da URL acima, deverá retornar no seguinte formato:

access_token=YOUR_APP_ACCESS_TOKEN

Salve o access token do seu aplicativo em um lugar onde poderá recuperá-lo mais tarde. (Normalmente em um banco de dados).

Expiração do access token

O access token do seu applicativo é assinado e associado ao seu APP_ID e SECRET. Portanto, o access token do aplicativo não expira, a não ser caso você resetar o seu APP_ID e SECRET.

Caso o usuário tenha removido seu aplicativo da lista de Aplicativo Configurados, você também não conseguirá mais postar no mural dele. Portanto, seja prudente ao realizar as publicações. Avise o usuário sobre a sua intenção de publicação no momento que o usuário ingressar no seu aplicativo.

Aplicativo de publicação

Segue abaixo um script simples que realiza a publicação no mural do usuário, sem a necessidade dele estar online no seu aplicativo.

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

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

// dados para envio da publicacao
$feed_data = array(
	"message" => "Youtube",
	"name" => "Site do Youtube", 
	"link" => "http://www.youtube.com", // link da publiccao
	"caption" => "www.youtube.com",
	"access_token" => "YOUR_APP_ACCESS_TOKEN",
);

try {
	// publica foto na timeline
	$dados = $facebook->api("/ID_USUARIO/feed", "post", $feed_data);
	echo "Foto publicada com sucesso!";
} catch (Exception $e) {
	echo "<pre>";
	var_dump($e);
	echo "</pre>";
}

Lembre-se de substituir os seguintes parâmetros:

  • APP_ID: ID do seu aplicativo.
  • SECRET: SECRET do seu aplicativo.
  • YOUR_APP_ACCESS_TOKEN: access token do seu aplicativo.
  • ID_USUARIO: ID do usuário que deseja publicar no mural.

Para mais detalhes de como realizar publicações, verificar o artigo Facebook php sdk, postando mensagens no mural do usuário

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

Facebook, Configurando App como Page Tab

Posted on janeiro 19, 2013. Filed under: Facebook, PHP | Tags:, , |

Usando a aplicação como um Page Tab

Introdução

O Facebook permite que você insira uma aba de uma aplicação dentro de uma fan page. É uma opção ideal para você associar aplicativos promocionais dentro de sua fan page.

Antes é necessário que você já tenha uma aplicação do facebook criada. Para saber mais como criar aplicações para facebook, acesse o link, Criando aplicativos para Facebook usando SDK do PHP.

O próximo passo é configurar a seção chamada Page Tab dentro das configurações da sua App:

ScreenShot040

Principais campos:

  • Page Tab Name: Nome que será exibido na fan page para referenciar a app!
  • Page Tab URL: URL da sua app que será aberto quando o usuário clicar no link da aba na fan page!
  • Secure Page Tab URL: URL da sua app que será aberto quando o usuário clicar no link da aba na fan page (Usado para usuários que acessam o facebook por conexão segura https)!
  • Imagem da guia da página: Imagem da aba que será exibida na fan page!
  • Page Tab Width: Largura máxima da exibição da “aba” da sua app dentro da fan page. A sua app será aberta dentro de uma tag iframe na fan page. Portanto tenha cuidado para não exceder no layout da sua página o limite configurado nesse campo!

PS: (Lembre-se que para configurar um Page Tab é necessário configurar o endereço https (SSL), pois usuários do facebook que usam conexões seguras irão ser direcionados para o link https).

Associando o Pag Tab à uma Fan Page

Para associar a Pag Tab que configuramos anteriormente à uma Fan Page, acesse o endereço abaixo:

https://www.facebook.com/dialog/pagetab?app_id=YOUR_APP_ID&display=popup&next=YOUR_URL

Substiuíndo:

  • YOUR_APP_ID: Pelo App ID da sua aplicação !
  • YOUR_URL: A URL configurada na Page Tab de sua app!

Irá abrir uma página onde você poderá escolher em qual fan page deseja que a app seja incluída. Semelhante à essa:

ScreenShot032

Escolha a fan page desejada e clique no botão Adicionar aba da Página.

Finalizando

Visualizando a sua aba inserida na fan page:

ScreenShot041

Ao clicar no link, você será enviado para dentro da sua app. Ela será aberta em um iframe dentro da fan page.

ScreenShot042

PS: Veja que o botão curtir acima do iframe onde sua app foi aberta, é referente ao curtir da sua fan page e não da sua app.

É muito comum alguns aplicativos promocionais obrigarem os usuários à curtir a fan page antes de poder participar da promoção. Quando você clica no botão Curtir, o próprio mecanismo do facebook irá fazer um refresh na página de sua aplicação, facilitando o desenvolvimento dessa função.

Para saber mais como verificar se o usuário curtiu ou não sua fan page, acesse meu post Facebook, Verificando se usuário curtiu fan page !

Observações

  • Não é possível inserir mais de uma Page Tab à uma app. Portanto, para cada Page Tab que deseje incluir na sua fan page, você terá que criar uma nova aplicação.
Ler Post Completo | Make a Comment ( 13 so far )

Facebook, Verificando se usuário curtiu fan page !

Posted on janeiro 11, 2013. Filed under: Facebook, JavaScript, PHP | Tags:, , |

Introdução

Neste artigo vamos demonstrar como você pode verificar se o usuário que acessa sua aplicação no facebook curtiu ou não uma determinada fan page.

Verificando se o usuário curtiu a fan page

Informações necessárias para nosso script:

  • Ter em mãos o APP_ID e o SECRET da app criada.
  • ID da Fan Page que deseja verificar se o usuário curtiu ou não.
  • Solicitar no mínimo a permissão user_likes, para podermos obter acesso ao likes realizados pelo usuário:
  • // verificar a necessidade de solicitar permissoes
    $permissions = $facebook->api("/me/permissions");
    if(!array_key_exists('user_likes', $permissions['data'][0])) {
            header( "Location: " . $facebook->getLoginUrl(array("scope" => "user_likes")) );
            exit;
    }
    
  • Código:
  • Para obter a informação se o usuário curtiu ou não a fan page, precisamos fazer uma consulta FQL (Facebook Query Language). FQL é uma maneira de solicitar dados de usuário usando um estilo de linguagem parecido com SQL.

    // id do usuário logado
    $facebook_user_id = $facebook->getUser();
    
    // verifica se usuário curtiu a fanpage
    $fql = "SELECT uid FROM page_fan WHERE page_id = '$FANPAGE_ID' AND uid = '$facebook_user_id'";
    $isFan = $facebook->api(array(
              "method" => "fql.query",
              "query"  => $fql,
    ));
    
    if($isFan) {
            echo "Usuário curtiu fanpage!";
    } else {
            echo "Usuário não curtiu fanpage!";
    }
    

Veja que devemos informar qual é o ID da Fan Page que deseja verificar e o ID do usuário que deseja checar. No caso, você pode colocar o id do usuário que esta logado na sua app.

Simples não ? Vamos agora colocar tudo junto em um único script:

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

// ATENCAO, configurar os parametros abaixo
$APP_ID = ""; // id da app
$SECRET = ""; // secret da app
$FANPAGE_ID = ""; // id da fanpage

// objeto do facebook
$facebook = new Facebook(array(
  'appId'  => $APP_ID,
  'secret' => $SECRET,
));

$facebook_user_id = $facebook->getUser();
if ($facebook_user_id) {
  try {
        // verificar a necessidade de solicitar permissoes
        $permissions = $facebook->api("/me/permissions");
        if(!array_key_exists('user_likes', $permissions['data'][0])) {
                header( "Location: " . $facebook->getLoginUrl(array("scope" => "user_likes")) );
                exit;
        }

        // verifica se usuario curtiu a fanpage
        $fql = "SELECT uid FROM page_fan WHERE page_id = '$FANPAGE_ID' AND uid = '$facebook_user_id'";
        $isFan = $facebook->api(array(
                  "method" => "fql.query",
                  "query"  => $fql,
        ));

        if($isFan) {
                echo "Usuario curtiu fanpage!";
        } else {
                echo "Usuario nao curtiu fanpage!";
        }

  } catch (FacebookApiException $e) {
        echo $e;
        $user = null;
  }
} else {
        // usuario nao logado, solicitar autenticacao
        $loginUrl = $facebook->getLoginUrl();
        header("Location: " . $loginUrl);
        exit;
}

Usando Javascript

Essa função pode ser útil no SDK do facebook para outras linguagens. Destaco o SDK para javascript, que é muito utilizado.

Vejamos como implementar no javascript:

FB.api({
        method: 'fql.query',
        query:  'SELECT uid FROM page_fan WHERE uid=' + user_id + ' AND page_id=' + fanpage_id
    }, function(resp) {
        if (resp.length) {
            alert('Usuario curtiu fanpage!')
        } else {
            alert('Usuario NAO curtiu fanpage!');
        }
    }
);

Colocando o código em um javascript funcional:

<html>
<head>
        <title>Teste de Login Facebook</title>
<script src="http://connect.facebook.net/en_US/all.js"></script>

<script>

// ATENCAO, configurar os parametros abaixo
var app_id = "";
var fanpage_id = "";

FB.init({
        appId  : app_id,
        status: true, cookie: false, xfbml: false, oauth: true
});

function usuarioCurtiuFanpage() {
        var user_id = (FB.getAuthResponse() || {}).userID

        if(!user_id) {
                return false;
        }

        FB.api({
                method: 'fql.query',
                query:  'SELECT uid FROM page_fan WHERE uid=' + user_id + ' AND page_id=' + fanpage_id
            }, function(resp) {
                if (resp.length) {
                    alert('Usuario curtiu fanpage!')
                } else {
                    alert('Usuario nao curtiu fanpage!');
                }
            }
        );
}

function verificaCurtir() {

        FB.getLoginStatus(function(response) {
                if (response.status !== 'connected') {
                        FB.login(function(response) {
                                if (response.authResponse) {
                                        // pronto, usuario logado
                                        usuarioCurtiuFanpage();
                                } else {
                                        alert('Voce nao esta autorizado a usar essa app!');

                                }
                        }, {scope: 'user_likes'});
                } else {

                        // pronto, usuario logado
                        usuarioCurtiuFanpage();
                }
        });

}

</script>
</head>

<body>
<a href="#" onClick="verificaCurtir();">Verificar fanpage</a>

</body>
</html>

Observações

  • Existem outras formas de verificar se o usuário curtiu a fan page. Uma delas é caso você esteja usando a app através de um Page Tab. A informação do curtir a fan page pode ser obtida através do parâmetro signed_request. Caso queira aprender a trabalhar com os dados do signed_request, leia o artigo http://developers.facebook.com/docs/howtos/login/signed-request/

    Boa sorte!!

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

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

%d blogueiros gostam disto: