with start instalar advanced php yii2 yii2-basic-app yii2-api

start - yii2 php version



API de Twitter: no recibe el correo electrónico del usuario-Yii2 (1)

Por fin, lo tengo.

Esta respuesta es para aquellos que acaban de instalar Twitter API o estancados en el medio .

Sigue paso a paso.

1) Si ya ha creado " Clave de consumidor (Clave de API) " y " Secreto de consumidor (Secreto de API) ". Luego, vaya directamente al Punto-5. De lo contrario, ejecute este comando php composer.phar require --prefer-dist yiisoft/yii2-authclient "*" en su sistema. Y genere " Clave de consumidor (Clave de API) " y " Secreto de consumidor (Secreto de API) ". Siga la nueva documentación de la aplicación Create and App de Twitter

2) En web.php

$config = [ . . ''components'' => [ . . ''authClientCollection'' => [ ''class'' => ''yii/authclient/Collection'', ''clients'' => [ ''twitter'' => [ ''class'' => ''yii/authclient/clients/Twitter'', ''consumerKey'' => ''Generated Consumer Key (API Key)'', ''consumerSecret'' => ''Generated Consumer Secret (API Secret)'', ], ], ], ],

3) En YourController.php (Controlador): agregue la sección de auth en las actions() función actions() Y, la función oAuthSuccess($client) (Como he declarado)

class UsersController extends CommonController { . . public function actions() { return [ . . ''auth'' => [ ''class'' => ''yii/authclient/AuthAction'', ''successCallback'' => [$this, ''oAuthSuccess''], ], ]; } . . public function oAuthSuccess($client) { // get user data from client $userAttributes = $client->getUserAttributes(); var_dump($userAttributes); die; // do some thing with user data. for example with $userAttributes[''email''] } . . }

4) En YourView.php (Ver)

<?= yii/authclient/widgets/AuthChoice::widget([ ''baseAuthUrl'' => [''/users/users/auth''] ]) ?>

5) Envíe un ticket de soporte a twitter para incluir su aplicación en una lista blanca. Seleccione I need access to special permissions y Rellene el campo requerido y envíelo.

6) Después de unos minutos / horas, recibirá un correo electrónico indicando / asunto " Solicitar acceso de correo electrónico otorgado ". El correo electrónico le dirá que inicie sesión en apps.twitter.com .

Después de un inicio de sesión exitoso,

  • haga clic en su Application Name .
  • Vaya a la pestaña " Configuración ", complete los campos de texto Terms of Service URL Privacy Policy URL y Terms of Service URL . Guárdelo a través del botón Update Settings .
  • Vaya a la pestaña " Permisos ", casilla de verificación Comprobar Request email addresses from users . Y, guárdelo mediante el botón Update Settings .
  • Vaya a la pestaña " Teclas y tokens de acceso ", y nuevamente " Regenere la clave y el secreto del consumidor " en la sección Application Actions .
  • Después de regenerar Consumer Key (API Key) y el Consumer Secret (API Secret) guárdelo en el archivo Web.php .
  • No te olvides de seguir los últimos 2 puntos en esta sección.

Al final,

7) Ir a subdirectorios:

Root Folder -> vendor -> yiisoft -> yii2-authclient -> clients -> Twitter.php

Twitter.php

Cambio

protected function initUserAttributes() { return $this->api(''account/verify_credentials.json'', ''GET''); }

A

protected function initUserAttributes() { return $this->api(''account/verify_credentials.json'', ''GET'', [''include_email'' => ''true'']); }

[ Nota: estoy usando Yii2-App-Basic. En Yii2-App-Advanced, solo la ruta de ubicación del archivo cambiará. ]

Enlaces relacionados :

Me sale un error como

Propiedad desconocida - yii / base / UnknownPropertyException

Configuración de propiedad desconocida : yii / authclient / clients / Twitter :: requestEmail

Siempre que incluya ''requestEmail'' => ''true'', en ''authClientCollection'' => [ para components en web.php

web.php

$config = [ . . ''components'' => [ . . ''authClientCollection'' => [ ''class'' => ''yii/authclient/Collection'', ''clients'' => [ ''twitter'' => [ ''class'' => ''yii/authclient/clients/Twitter'', ''requestEmail'' => ''true'', ''consumerKey'' => ''IFK2OMG0rKIFK2Jt4rLvw'', ''consumerSecret'' => ''ImTprQzaOMG0rKZsZiPDIvwIFK2aOMG0rKZsZiPD'', ], ], ], ],

UsersController.php (Controlador)

class UsersController extends CommonController { . . public function actions() { return [ . . ''auth'' => [ ''class'' => ''yii/authclient/AuthAction'', ''successCallback'' => [$this, ''oAuthSuccess''], ], ]; } . . public function oAuthSuccess($client) { // get user data from client $userAttributes = $client->getUserAttributes(); var_dump($userAttributes); die; // do some thing with user data. for example with $userAttributes[''email''] } }

login.php (Ver)

. . <p class="text-center"> <?= yii/authclient/widgets/AuthChoice::widget([ ''baseAuthUrl'' => [''/users/users/auth''] ]) ?> </p> . .

Pero, tan pronto como estoy omitiendo la línea ''requestEmail'' => ''true'', de web.php . Esta funcionando. Recibo todos los datos requeridos excepto el email . Pero el problema es que no recibo el email del usuario que intenta iniciar sesión. Alguna idea, como puedo obtenerla Cualquier sugerencia / sugerencia será de gran ayuda para mí. Gracias.