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
yTerms of Service URL
. Guárdelo a través del botónUpdate Settings
. - Vaya a la pestaña " Permisos ", casilla de verificación Comprobar
Request email addresses from users
. Y, guárdelo mediante el botónUpdate 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 elConsumer 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.