Oauth / adaptador Auth Twitter para Zend Framework
O traballo continúa (lentamente) no meu novo Twitter base da aplicación. Nos próximos festivos Espero conseguir o impulso de ir de novo para o proxecto (in-a pesar do clima agradable no presente). En fin, a miña seguinte tarefa era crear un adaptador de autenticación para o Zend Framework . Eu tiña un traballo de implantación de usuario, pero ter unha caída na Auth adaptador para Zend Framework parecía ser unha proposta atractiva, polo que criei iso ....
(Eu non estou indo atravesar Oauth ou rexistrar o seu programa con Twitter, hai centos de guías e seu un proceso moi sinxelo de calquera maneira.)
A diferenza entre OAuth e os adaptadores authenication outros no Zend Framework é que Oauth require redirixido e para atrás entre o provedor eo servidor oauth solicitante polo cliente. Polo tanto, o proceso non é tan sinxelo coma simplemente ollando para arriba de que algúns detalles nunha base de datos ou verificación de títulos de solicitude. Afortunadamente, o Framework Zend compoñentes, como Zend_Oauth_Consumer , teño moito da dor eo seu xusto emprego do adaptador de autenticación para facer chamadas de método necesario.
Para unha guía de uso Zend_Auth e executar identificación co Zend Framework ten unha busca no google, ou vai a este tutorial por Matthew Weier O'Phinney - Iniciar e autenticación .
Uso
Co fin de utilizar o adaptador de autenticación que precisa para pasar dous obxectos en vía o constructor. O primeiro é un exemplo de Zend_Oauth_Consumer configurado para o seu proveedor de OAuth. Eu teño feito isto co servizo de Twitter e pode ver unha peza rápida sobre iso aquí - Entrar co Twitter utilizando o Zend Framework . Está a usar a miña aplicación, onde eu definir o "URL Autorizar" como eu non quero usuario para ser invitado a dar permiso para a aplicación cada vez que tratan de facer o login. O segundo parámetro é unha instancia de Zend_Session_Namespace que é instanciado co espazo en que quere poñer os detalles de autenticación. No meu código eu teño algo como o seguinte:
$ Config = array ( "CallbackUrl '=> ... url de retorno ..., "SiteUrl '=>' https: / / twitter.com / oauth, "ConsumerKey '=> ... consumidor clave ..., "ConsumerSecret '=> ... de clave secreta ..., ); $ Consumidor Zend_Oauth_Consumer = new ($ config); setAuthorizeUrl $ consumidor-> ('https: / / twitter.com / oauth / entrar'); $ Session = Zend_Session_Namespace novo (Pro_Auth_Adapter_Twitter: AUTH_NAMESPACE); $ AuthAdapter Pro_Auth_Adapter_Oauth = new ($ consumidor, $ sesión);
Chamando ->authenticate() sobre o adaptador, entón, facer unha redirección para os provedores OAuth (de novo no meu caso Twitter). Ao voltar para a aplicación da segunda chamada para ->authenticate() vai realmente realizar a identificación en si.
Se quere que o usuario volva á páxina initally solicitado, a continuación, sempre que o seu status de identificación é tomada en cada solicitude, a continuación, pode facer que o parámetro adecuado "callBackUrl" en tempo de carga recibiría o usuario para o seu destino inicialmente previsto.
Un último recurso que foi engadida a posibilidade de enviar os parámetros adicionais usando o addParameter() e setParameters() métodos. Engadindo esta funcionalidade permite o envío de parámetros GET adicionais ao facer a redirección inicial para os provedores OAuth. No meu caso, que me permite pasar unha matriz cunha clave de "force_login e valor de verdade que as forzas de Twitter para pedir que entrar de novo (aínda que xa feito) que é óptimo para aplicacións ligadas á multi-conta.
O código está dispoñible no meu arquivo no GitHub - Oauth adaptador de autenticación para Zend Framework código (comentarios benvidos!).
Edit: Parece que alguén fose o caso tamén. Por outra implementación consulte http://www.jasonawesome.com/2010/11/24/authenticating-to-twitter-with-zend_auth/


















































