Como obter (e usar) Permissões estendidas no Facebook com Python/Django
-
21-09-2019 - |
Pergunta
Estou tentando escrever um aplicativo simples que permita que um usuário conceda a permissão do meu código para escrever no fluxo do Facebook da página dela. Pelo que entendi, deve ser tão fácil quanto:
- Peça ao usuário que clique em um botão que inicie um pop -up que contém a página A no meu aplicativo do Facebook.
- Nessa página, eles clicam em algo que concede stream_publish ao meu aplicativo e atribui essa permissão à sua página.
- A janela fecha, agora tenho todas as informações necessárias para executar um script em Cron para empurrar as coisas para o fluxo dessa página.
Eu tenho lido o wiki há dias. Notas sobre pyfacebook estão pelo menos um ano desatualizado, e as pessoas me apontaram para o Socialauth App for Django, que parece estar igualmente desatualizado e focado em direcionar os usuários em oposição às suas páginas. Eu não posso nem fazer o número 1 lá em cima, deixe o #2 e o 3.
Se alguém pudesse me mostrar como usar o Django/Python para solicitar/receber permissão para escrever em um fluxo do Facebook, isso seria um ótimo começo.
Qualquer ajuda seria muito apreciada.
Solução 2
Depois de muito mexer, parece ter resolvido todos os meus problemas no Facebookland:
- Acontece que ter um usuário clicar em um botão para conceder permissões é tão fácil quanto Caio Romão disse que era. Porém, na minha parte, descobri que direcioná -los para o link do aplicativo de desktop do Facebook era muito mais fácil e confiável.
- Usando este método de link, o Facebook permite especificar
enable_profile_selector=1
que garantirá que seja gerada uma lista de páginas a partir da qual o usuário pode selecionar quais páginas (se houver) concederão essas permissões. - Para este, porém, porém, Facebook está totalmente quebrado. Enquanto no #2, eles permitem que o usuário selecione uma página para conceder permissões, Eles não passam essas informações para o aplicativo por meio de um post ou nos cabeçalhos. Simplesmente não está lá. Em vez disso, você precisa fazer um truque feio com o FQL e algumas perguntas adicionais ao usuário para fazê -lo funcionar.
De qualquer maneira, eu detalhou tudo no meu blog Se alguém estiver interessado. Obrigado pela ajuda!
Outras dicas
Você já olhou minifb? Seus Página de exemplos Mostra basicamente tudo o que você precisa saber para solicitar autorização e receber uma chave de sessão. (Também o página do github para pyfacebook mostra que a biblioteca ainda está viva)
Então, para o seu cenário, você precisaria:
- Solicite a permissão "stream_publish". Há algumas maneiras Para fazer isso, mas eu realmente iria para o mais fácil: enviando um formulário (Observe que nunca fiz um aplicativo para o Facebook, provavelmente estou errado, assumindo que essa abordagem é a mais fácil :-)
- Use seu aplicativo normalmente: ligue para os métodos da API usando o user_id do usuário que autorizou seu aplicativo (você precisará armazená -lo) e, como você foi autorizado, ele não deve falhar.
Para isso, basicamente, adicione este formulário em seu modelo:
<form promptpermission="publish_stream">
<input type="submit" value="Allow Publish Stream">
</form>
Parabéns aos desenvolvedores do Facebook, a propósito. Muito boa documentação oficial.
EDITAR: Ainda não tenho permissão para comentar assim: você deve enfrentar problemas recebendo o uid, verifique essa questão e as referências.