Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Freelife

Facebook Login automático sem redirect

Recommended Posts

Olá,

 

Há alguns dias venho tentando encontrar um meio de fazer login automático com o SDK do Facebook.

 

Basicamente o processo é fazer uma requisição utilizando os passos como neste link(pra quem quiser ler):
https://developers.facebook.com/docs/php/FacebookRedirectLoginHelper#usage

 

Resumindo: Crio um script que faz a requisição para o facebook, ele devolve uma url que ao ser acessada traz a tela de login do face, depois que o usuário digita login e senha, ele redireciona novamente para o endereço callback estabelecido(meu site/sistema).

 

Porém o que eu quero é fazer o login sem precisar digitar login e senha, realmente um processo automático com o usuário e senha salvos, fazer a requisição, logar e continuar fazendo o que preciso fazer.

 

Detalhe, da maneira usual consigo fazer login normalmente e postar na timeline.

 

Eu pesquisei tentei escrever o script e nada.


Agradeço desde já a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum.. então, se o usuário e senha já estiver salvo no navegador da pessoa e ela estiver com uma sessão aberta no facebook, vai ser isso que vai acontecer..

 

Pelo o que entendi você já fez tudo certinho cara.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela resposta Willian, mas não é bem isso sabe...

Veja do modo como estou fazendo, funciona assim:

 

1 Usuário acessa url inicial

2 Sistema faz requisição para o FB e obtem a URL Redirect de login e redireciona o usuário

3 Carrega tela de login e usuário digita login e senha.

4 Após aprovação do login, FB redireciona usuário para URL Callback informada(sistema)

 

Mas quero que funcione assim:

 

1 Script faz requisição para o FB informando dados do aplicativo(app_id e app_secret)

2 FB devolve algo que propicie o login diretamente (como um end point da própria api )

3 Sistema envia dados de login e senha salvos no BD para o local informado pelo FB

4 FB autentica usuário e devolve dados de "sessão"

5 Após logado no FB, script interage com FB.

 

Não sei se consegui me explicar claramente, mas é isso.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, e aí, blz???

Consegui sim.
Depois de muito penar.
Mas o que eu consegui só serve para publicar em uma página. Não sei se dá pra postar diretamente na linha do tempo de um usuário normal.

Você precisará de alguns dados como:
Token long live
app_id
app_secret

depois destes dados em mãos... segue o exemplo de como utilizar:

arquivo: post_in_page.php

<?
//post_in_page.php
session_start();
error_reporting(E_ALL);
ini_set('display_errors',1);
require_once 'facebook/src/Facebook/autoload.php';

$uploadFile=null;
$mensagem=null;
if(isset($_FILES['imagem_form']) && !empty($_FILES['imagem_form']['name'])){
	$uploaddir = '/path/to/you/directory/';
	$uploadFile = $uploaddir . basename($_FILES['imagem_form']['name']);

	if(move_uploaded_file($_FILES['imagem_form']['tmp_name'], $uploadFile)) {
		echo "Arquivo valido e enviado com sucesso.\n";
	} else {
		echo "Possivel ataque de upload de arquivo!\n";
	}
}

if(isset($_REQUEST['mensagem_form']) && !empty($_REQUEST['mensagem_form'])){
	$mensagem=$_REQUEST['mensagem_form'];
}

//Token long live
$accessToken='..'; // ...EBAMX4rKO4HwT4oUJtHPoVPubDEwuhZ...
$fbData = array(
	'app_id'=>'xxx',
	'app_secret'=>'xxx',
	'default_access_token'=>$accessToken,
	'default_graph_version'=>'v2.5'
);

$fb = new Facebook\Facebook($fbData);

if($uploadFile && $mensagem){
	$linkDataImage=array(
		'source'=> $fb->fileToUpload($uploadFile),
		'message' => $mensagem
	);
}else if($mensagem){
	$linkData=array(
		//'link' => 'http://google.com',
		'message' => $mensagem //,
		//'image'=>'http://link-para-alguma-imagem.jpg'
	);
}else{
	exit;
}

try {
	// Returns a `Facebook\FacebookResponse` object
	if(isset($linkDataImage)){
		$response = $fb->post('/me/photos', $linkDataImage);
	}else{
		$response = $fb->post('/me/feed', $linkData);
	}

} catch(Facebook\Exceptions\FacebookResponseException $e) {
	echo 'Graph returned an error: ' . $e->getMessage();
	exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
	echo 'Facebook SDK returned an error: ' . $e->getMessage();
	exit;
}
$graphNode = $response->getGraphNode();
header("location: upload.html?id=".$graphNode['id']);
exit;
?>

arquivo: upload.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Upload photo By Javascript Simulation</title>
<style>
.post {
	color:rgb(20, 24, 35);
	direction:ltr;
	display:block;
	font-family:helvetica, arial, sans-serif;
	font-size:12px;
	line-height:16.08px;
	width:496px;
	word-wrap:break-word;
	zoom:1;
	border: 1px solid rgb(223, 224, 228);
	float:right;
}
#imagem{
	max-width: 470px;
}
.mensagem, .imagem {
	width: 470px;
	margin: 0 auto;
}
.mensagem {
	color:rgb(20, 24, 35);
	display:block;
	font-family:helvetica, arial, sans-serif;
	font-size:14px;
	font-weight:normal/
	height:19px;
	line-height:16.08px;
	overflow-x:hidden;
	overflow-y:hidden;
	word-wrap:break-word;
	zoom:1;
}
#form_post{
	float: left;
}
#mensagem_form {
	width: 470px;
	height: 100px;
	font-family:helvetica, arial, sans-serif;
	font-size:14px;
}
</style>
<script>
window.onload=function(){
	imagem=document.getElementById("imagem")
	var mensagem=document.getElementById("mensagem")
	var imagemPost=document.getElementById("imagem_form")
	var mensagemPost=document.getElementById("mensagem_form")
	

	imagemPost.addEventListener("change", function(){
		var input = document.querySelector("input[type='file']");
		var filesToUpload = input.files;
		var file = filesToUpload[0];
		var reader = new FileReader();
		reader.onload = function(e) {imagem.src = e.target.result}
		reader.readAsDataURL(file);
	})
	mensagemPost.addEventListener("keyup", function(){
		console.log(this.value)
		mensagem.innerHTML=this.value
	})

}
</script>
</head>
<body>

	<div class="post">
		<div class="mensagem" id="mensagem">
			Postando Imagens ....
		</div>
		<div class="imagem">
			<img src="http://og.infg.com.br/in/7812418-dbd-626/FT631A/facebook_like_button_big1.jpg" id="imagem"/>
		</div>
	</div>
	<form id="form_post" name="form_post" action="post_in_page.php" method="post" enctype="multipart/form-data">
		<table border="0" cellpadding="0" cellspacing="0">
			<tr>
				<th>Mensagem:</th>
				<td><textarea id="mensagem_form" name="mensagem_form"></textarea>
			</tr>
			<tr>
				<th>Imagem:</th>
				<td><input type="file" id="imagem_form" name="imagem_form" /></td>
			</tr>
			<tr>
				<td colspan="2" style="text-align:right"><input type="submit" value="Postar"/></td>
			</tr>
		</table>
	</form>

</body>
</html>

Caso não funcione, peço desculpas.

É que eu mexi com isso em dezembro de 2015.

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Jack Oliveira
      Ola pessoal boa noite
       
      Bom pessoal estou fazendo uma função para formatar url de rede social,
      FACEBOOK, INSTAGRAM & TWITTER, não sei se esta da forma correta em fazer.
      Ex: https://www.facebook.com/minha-pagina   quero pegar apenas o final que seria minha-pagina 
      Isso seria tanto no instagram e twitter
       
      Fiz da seguinte forma
      <?php function FormatarUrlRedeSocial($URL){ if (strstr($URL, 'https://facebook.com/') || strstr($URL, 'http://facebook.com/')) { $UrlRedeSocial = explode('facebook.com/', $URL); return $UrlRedeSocial[1]; } elseif (strstr($URL, 'http://') || strstr($URL, 'https://')){ $UrlRedeSocial = explode($URL); $UrlRedeSocial = explode($UrlRedeSocial[1]); return $UrlRedeSocial[0]; } else { return $URL; } } ?> Porem quero que seja apenas uma função unica para todos 
      Tipo
      https://www.facebook.com/<?= FormatarUrlRedeSocial($dados['url_facebook']); ?> https://www.instagram.com/<?= FormatarUrlRedeSocial($dados['url_instagram']); ?> https://www.twitter.com/<?= FormatarUrlRedeSocial($dados['url_twitter']); ?>  
      Bom do porque não usar os link´s direto, bom pois em outras parte que vou pegar este nome no final não poderia ter o link completo
      Então decide fazer uma função onde não vou precisar criar vários campos na tabela sem necessidades. Espero que possam entender o que preciso.
       
      Se puder da uma ajuda fico grato...
    • Por Febatera7
      Preciso construir um microsserviço, apenas no lado do servidor (Node.js) que leia menções e comentários em postagens em que o @ do meu cliente foi marcado, em seguida, salve essas mensagens em nosso banco de dados, para especialistas de atendimento para responderem mais tarde.
      Este microsserviço também deve ser capaz de ler e salvar as fotos destas postagens e comentários.
      Para Node.js, vi que não há SDK, então procurei os terceiros que o próprio Facebook indica, mas não encontrei nada sobre ler e responder a menções e comentários em postagens.
      Tentei utilizar as bibliotecas fb e fbgraph, mas nenhuma delas me dá as opções para ler postagens em que fui marcado, apenas as do meu próprio feed.
      Alguém pode me ajudar? Por onde posso começar? Há alguma outra biblioteca que consiga utilizar?
    • Por Roberto S. Santos
      Bom dia.
      Eu gostaria de postar uma foto do meu computador no facebok usando VB.NET com login automático.
      Teria como fazer em VB.net ou HTML ?
      Obrigado.
    • Por Motta
      Big techs abusam de poder e devem ser divididas, diz relatório da Câmara dos EUA
    • Por MatheusFenix
      Boa pra todos, preciso de uma pessoa que saiba como usar uma API atualizada do facebook que pegue o token do usuario do facebook e que ao logar aparecam os grupos.
      Se alguem souber ocmo fazer isso por favor pode entrar em contato comigo no whats 13 997824465
      URGENTE !!!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.