Oauth / adaptador Auth Twitter para Zend Framework

Por Watkin Steven Lloyd , sábado 23 de abril de 2011 15:57

O trabalho continua (lentamente) no meu novo Twitter base do aplicativo. Nos próximos feriados Espero conseguir o impulso de ir novamente para o projecto (in-apesar do clima agradável no presente). Enfim, a minha próxima tarefa era criar um adaptador de autenticação para o Zend Framework . Eu tinha um trabalho de implementação de login, mas ter uma queda na Auth adaptador para Zend Framework parecia ser uma proposta atraente, por isso criei isso ....

(Eu não estou indo atravessar Oauth ou registrar seu aplicativo com Twitter, há centenas de guias e seu um processo bastante simples de qualquer maneira.)

Desfrute de Confiança do Consumidor

A diferença entre OAuth e os adaptadores authenication outros no Zend Framework é que Oauth requer redirecionando e para trás entre o fornecedor eo servidor oauth requerente pelo cliente. Portanto, o processo não é tão simples como apenas olhando a alguns detalhes em um banco de dados ou controlo de cabeçalhos de solicitação. Felizmente, o Framework Zend componentes, tais como Zend_Oauth_Consumer , preciso muito da dor e seu justo emprego do adaptador de autenticação para fazer chamadas de método necessário.

Para um guia de utilização Zend_Auth e executar autenticação com o Zend Framework tem uma busca no google, ou vá para este tutorial por Matthew Weier O'Phinney - Login e autenticação .

Uso

A fim de usar o adaptador de autenticação que você precisa para passar dois objetos em via o construtor. O primeiro é um exemplo de Zend_Oauth_Consumer configurado para o seu provedor de OAuth. Eu tenho feito isso com o serviço do Twitter e você pode ver um pedaço rápida sobre isso aqui - Entrar com o Twitter utilizando o Zend Framework . Eu estou usando a minha implementação, onde eu definir o "URL Autorizar" como eu não quero usuário para ser convidado a dar permissão para a aplicação a cada vez que tentam fazer o login. O segundo parâmetro é uma instância de Zend_Session_Namespace que é instanciado com o espaço em que você deseja colocar os detalhes de autenticação. No meu código eu tenho algo como o seguinte:

  $ Config = array (
     "CallbackUrl '=> ... url de retorno ...,
     "SiteUrl '=>' https: / / twitter.com / oauth,
     "ConsumerKey '=> ... consumidor-chave ...,
     "ConsumerSecret '=> ... de chave secreta ...,
 );
 $ Consumidor Zend_Oauth_Consumer = new ($ config);
 setAuthorizeUrl $ consumidor-> ('https: / / twitter.com / oauth / autenticar');
 $ Session = Zend_Session_Namespace novo (Pro_Auth_Adapter_Twitter: AUTH_NAMESPACE);
 $ AuthAdapter Pro_Auth_Adapter_Oauth = new ($ consumidor, $ sessão); 

Chamando ->authenticate() sobre o adaptador, então, fazer um redirecionamento para o provedor OAuth (novamente no meu caso o Twitter). Ao retornar para a aplicação da segunda chamada para ->authenticate() vai realmente executar a autenticação em si.

Se você queria que o usuário retorne à página initally solicitado, em seguida, desde que o seu status de autenticação é verificado em cada solicitação, em seguida, basta definir o parâmetro adequado "callBackUrl" em tempo de carga receberia o usuário para o seu destino inicialmente previsto.

Um último recurso que foi acrescentada a possibilidade de enviar os parâmetros adicionais usando o addParameter() e setParameters() métodos. Adicionando esta funcionalidade permite o envio de parâmetros GET adicionais ao fazer o redirecionamento inicial para o provedor OAuth. No meu caso, isso me permite passar uma matriz com uma chave de "force_login e valor de verdade que as forças do Twitter para pedir que você logar novamente (mesmo se já feito) que é ótimo para aplicações ligadas à multi-conta.

O código está disponível no meu repositório no GitHub - Oauth adaptador de autenticação para Zend Framework código (comentários bem-vindos!).

Edit: Parece que alguém tenha sido o caso também. Por outro implementação consulte http://www.jasonawesome.com/2010/11/24/authenticating-to-twitter-with-zend_auth/

Deixe uma resposta













Panorama Tema por Themocracy

7 visitantes online agora
4 pessoas, 3 bots, 0 membros
Max visitantes hoje: 11 às 01:06 UTC
Este mês: 22 em 2011/08/06 12:30 UTC
Este ano: 130 em 28-03-2011 22:40 UTC
Todos os tempos: 130 em 28-03-2011 10:40 UTC