Creando (registrando) un Usuario en la WebTV
soporte, ws.webtv, api, users, create
Variables GET específicas para esta solicitud:
Var | Valor | Descripción |
go | users | La sección del API |
do | create | La acción del API |
URL Resultante:
La URL de solicitud resultante sería similar a la siguiente (no se olvide de añadir la información requerida key, timestamp, salt and signature):
https://....../api.php?go=users&do=create&{información requerida}
La siguientes variables POST son requeridas.
Caso 1 - Registro estándar:
Var | Valor | Descripción |
login | (string) Nombre de Usuario | [Hasta 40 caracteres] Nombre de Usuario (Login)... - Asegúerese de verificarlo primero |
password | (string) Contraseña | Contraseña... |
(string) E-Mail | [Hasta 100 caracteres] El E-Mail del Usuario... - Asegúerese de verificarlo primero | |
alias | (string) Alias | [Hasta 60 caracteres] El nombre público del usuario. |
notify_webmaster | (int) 0|1 | [No requerido pero recomendado] Si se desea enviar una notificación al Webmaster de la WebTV. |
Caso 2 - Registro usando un proveedor de login externo (WS.WebTV 1.8.5+):
Var | Valor | Descripción |
login | (string) Nombre de Usuario | [Hasta 40 caracteres] Suministre "timestamp@ext.auth" (timestamp es una estampa de tiempo Unix). |
password | (string) Contraseña | Valor alfanumérico aleatorio... |
(string) E-Mail | [Hasta 100 caracteres] Suministre el E-Mail del usuario, facilitado por el proveedor de login externo o "timestamp@ext.auth".(timestamp es una estampa de tiempo Unix. | |
alias | (string) Alias | [Hasta 60 caracteres] "Screen name" facilitado por el proveedor de login externo. |
notify_webmaster | (int) 0|1 | [No requerido pero recomendado] Si se desea enviar una notificación al Webmaster de la WebTV. |
ext_auth | (int) 1 | Indique que se trata de un registro utilizando un proveedor de login externo. |
ext_provider | (string) proveedor_de_login | Nombre del proveedor de login. Opciones disponibles: "twitter", "facebook", "oauth", "google", "openid" |
ext_user_id | (string) id_usuario_externo | ID del usuario, facilitado por el proveedor de login externo. |
ext_token | (string) token_externo | [Opcional] Si dispone de un token (para el usuario) facilitado por el proveedor de login externo, suminístrelo aquí. |
ext_secret | (string) secret_externo | [Opcional] Si dispone de un secret (para el usuario) facilitado por el proveedor de login externo, suminístrelo aquí. |
La siguientes variables POST son opcionales pero requiren la extensión Gestión Avanzada de Usuarios.
Var | Valor | Descripción |
status | (int) estado | Posibles valores. 0 (inactivo), 1 (activo), 2 (pendiente de verificación). |
send_user_verification_email | (int) 0|1 | [Sólo si status=2] Esto enviará un E-Mail de verificación al usuario. El Usuario se activará después de visitar el enlace enviado en el E-Mail de verificación. |
store_post_registration | (int) 0|1 | [Sólo si está activa la extensión Tienda] Si se desea permitir que la extensión Tienda realice cualquier proceso de post-registro; por ejemplo, añadir crédito a la cuenta del Usuario, de acuerdo a los ajustes de la configuración. |
access_level | (int) nivel de acceso | Posibles valores: 0 (Webmaster), 1 (Administrador), 2 (Autor), 3 (Colaborador), 4 (Suscriptor de pago), 5 (Suscriptor gratuito). |
id_privilege_set | (int) ID conjunto de privilegios | [Sólo si se ha especificado el access_level] ID del conjunto de privilegios. Si no se especifica, se utilizará el conjunto de privilegios predefinido para el nivel de acceso asignado al Usuario. NOTA: Esta variable está disponible desde WS.WebTV 2.2 |
cms_access | (int) 0|1 | Si se desea permitir que el usuario acceda a la interfaz de Administración de Contenidos. |
content_creation_limits | (int) 0|1 | [Sólo si access_level es 2 (Autor) o 3 (Colaborador)] Posibles valores: 0 (global), 1 (específico, por usuario). |
max_created_clips | (string) limits | [Sólo si content_creation_limits = 1] 5 valores separados por coma (uno por tipo de clip). Ejemplo: '100,100,1,100,100' quiere decir 100 Clips Estándar, 100 StreamClip VODs, 1 StreamClip Live, 100 EmbedClips y 100 Clips Auto-Compresión. Nota: 0 = sin límite. |
max_created_channels | (int) limit | [Sólo si content_creation_limits = 1] Número máximo de Canales de Vídeo. Nota: 0 = sin límite. |
max_created_news | (int) limit | [Sólo si content_creation_limits = 1] Número máximo de Noticias + Eventos. Nota: 0 = sin límite. |
max_created_galleries | (int) limit | [Sólo si content_creation_limits = 1] Número máximo de Galerías. Nota: 0 = sin límite. |
max_created_assorted_files | (int) limit | [Sólo si content_creation_limits = 1] Número máximo de Imágenes Varias.
Nota: 0 = sin límite. NOTA: Esta variable está disponible desde WS.WebTV 3 |
max_video_upload_size | (int) limit | [Sólo si content_creation_limits = 1] Tamaño en MB. |
terms_conditions_accepted | (int) 0|1 | Si el Usuario ha aceptado los Términos y Condiciones. Tenga presente que si la WebTV está configurada para requerirlo, y pasa como valor como 0 (no aceptado), o lo omite, recibirá un error. NOTA: Esta variable está disponible desde WS.WebTV 3.0.1 |
privacy_policy_accepted | (int) 0|1 | Si el Usuario ha aceptado la Política de Privacidad. Tenga presente que si la WebTV está configurada para requerirlo, y pasa como valor como 0 (no aceptado), o lo omite, recibirá un error. NOTA: Esta variable está disponible desde WS.WebTV 3.0.1 |
eml_receive_site_news | (int) 0|1 | Si el Usuario ha dado su consentimiento para recibir Noticias del Sitio. NOTA: Esta variable está disponible desde WS.WebTV 3.0.1 |
eml_receive_new_content_digest | (int) 0|1 | Si el Usuario ha dado su consentimiento para recibir el Newsletter Últimos Contenidos. NOTA: Esta variable está disponible desde WS.WebTV 3.0.1 |
lang_frontend | (string) lamguage_code | La elección de idiom para el Front-End. Posibles valores: Vacío ('') para idioma predefinido/global o el correspondiente código de idioma. Si el código de idioma suministrado no existe entonces el idioma predefinido/de sistema se utilizará. NOTA: Esta variable está disponible desde WS.WebTV 52pf2 |
lang_backend | (string) lamguage_code | La elección de idiom para el Back-End. Posibles valores: Vacío ('') para idioma predefinido/global o el correspondiente código de idioma. Si el código de idioma suministrado no existe entonces el idioma predefinido/de sistema se utilizará. NOTA: Esta variable está disponible desde WS.WebTV 52pf2 |
name | (string) nombre | El nombre real del Usuario. |
surname | (string) apellidos | El/los apellidos del Usuario. |
gender | (int) sexo | Posibles valores: 0 (Desconocido), 1 (Hombre), 2 (Mujer). |
birthdate_y | (int) año | Fecha de nacimiento - año: YYYY. |
birthdate_m | (int) mes | Fecha de nacimiento - mes (1-12). |
birthdate_d | (int) día | Fecha de nacimiento - día (1-31). |
company | (string) organización | Compañía u organización. |
vat | (string) VAT/IVA/NIF... | Este campo es utilizado para almacenar un número de identificación fiscal. For ejemplo, número VAT/IVA en Europa o NIF/CIF/DNI/NIE en España. |
address | (string) dirección | Dirección completa. |
postal_code | (string) código postal | El código postal. |
country | (string) país | Nombre completo del país. |
telephone | (string) teléfono | Número de teléfono. |
web | (string) URL | Sitio Web del usuario. |
notes | (string) notas | Notas del Administrador. Este campo sólo puede ser visto por Webmasters y Administrtadores. |
avatar_display | (int) modo avatar | Posibles valores: 0 (Imagen de la WebTV), 1 (Gravatar, Mistery-Man), 2 (Gravatar, Identicon), 3 (Gravatar, Monsterid), 4 (Gravatar, Wavatar), 5 (Gravatar, Retro). |
reg_referer | (string) referer | La URL de referencia "referer" (en caso de haberla). Por ejemplo, si el registro del Usuario procede de otro Sitio Web. |
reg_ip | (string) Dirección IP | La dirección IP del Usuario. Cuando no se suministre, la WebTV utilizará la IP detectada (la IP de la aplicación). |
reg_useragent | (string) user agent | El agente "user agent" (normalmente, la información del Navegador Web). |
reg_content_referral | (string) Objecto JSON | La referencia al contenido de la WebTV desde el cual el usuario se registra (por ejemplo, si el usuario se registra después de visitar un Canal o Clip restringido, específico). Así pues, este dato permite identificar si el origen de un registro es un contenido de la WebTV. Los datos deben estar en formato JSON y, si se suministra, debe contener las siguientes propiedades: - "content_type": Puede ser "channel", "clip" o "gallery". - "content_id": El ID del contenido. - "content_title": El título del contenido o string vacío. - "content_url": La URL del contenido o string vacío. NOTA: Esta variable está disponible desde WS.WebTV 56pf3 |
social_page_facebook | (string) URL | URL del perfil de Facebook. |
social_page_googleplus | (string) URL | URL del perfil de Google+. |
social_page_twitter | (string) URL | URL del perfil de Twitter. |
social_page_linkedin | (string) URL | URL del perfil de LinkedIn. |
social_page_instagram | (string) URL | URL del perfil de Instagram. NOTA: Esta variable está disponible desde WS.WebTV 2.4pf2 |
social_page_flickr | (string) URL | URL del perfil de Flickr. |
social_page_vkontakte | (string) URL | URL del perfil de VKontakte. |
social_page_tuenti | (string) URL | URL del perfil de Tuenti. |
social_page_other | (string) URL | URL de otra página social. |
profile_page_privacy | (int) privacidad | Si se desea que la página con el perfil del Usuario sea pública o privada. Posibles valores: 0 (pública), 1 (Sólo Usuarios de la WebTV), 2 (privada). |
profile_page_about | (string) texto | Texto público "Acerca de" del Usuario. |
profile_page_show_country | (int) 0|1 | Si se desea mostrar el país del Usuario en la página de perfil. |
profile_page_show_web | (int) 0|1 | Si se desea mostrar el Sitio Web del Usuario en la página de perfil. |
profile_page_show_social | (int) 0|1 | Si se desea mostrar los enlaces a los perfiles sociales del Usuario en la página de perfil. |
Si la solicitud es exitosa, recibirá una respuesta conteniendo:
• ok: Si el Usuario fue creado (registrado) exitosamente.
• id: El ID del Usuario.
• activation_key: La clave de activación.
Ejemplo:
{ "ok": "User was registered successfully", "id": 78, "activation_key": "bj8g3dz5xsntprsy0icc" }
Si la solicitud no es exitosa (por ejemplo, si el Nombre de Usuario/Login es inválido), recibirá una respuesta como la siguiente:
{ "error": "REGISTRATION_ERROR", "error_long": "Invalid login" }
Posibles Mensajes de Error
Además de los errores generales, esta solicitud puede devolver los siguientes errores:
• REGISTRATION_ERROR | {Mensaje}:
No fue posible crear (registrar) el Usuario por la razón especificada.
Preparando los datos GET y POST.
// The GET vars $GET_VARS = array( "go" => "users", "do" => "create" ); // The POST vars $POST_VARS = array( "login" => "mrbean", "password" => "123", "alias" => "Mr. Bean", "email" => "mrbean@beanmail.bean", "notify_webmaster" => 1, // Enviar E-Mail de notificación al Webmaster // ----- Campos opcionales (se requiere ext. Gestión Avanzada de Usuarios) "status" => 2, // Pendiente de verificación "send_user_verification_email" => 1, // Enviar E-Mail de verificación al Usuario "store_post_registration" => 1, // Permitir a la extensión Tienda realizar proceso post-registro "access_level" => 5, // 5 (Suscriptor gratuito) "cms_access" => 1, // 1 Se permite el acceso al Administrador de Contenidos "name" => "Rowan", // El nombre real del Usuario "surname" => "Atkinson ", // El/los apellidos del Usuario "gender" => 1, // 1 (hombre) "birthdate_y" => 1955, // Fecha de nacimiento: año "birthdate_m" => 1, // Fecha de nacimiento: mes "birthdate_d" => 6, // Fecha de nacimiento: día "company" => "", "address" => "", "postal_code" => "", "vat" => "", "country" => England"", "telephone" => "", "web" => "http://www.mrbean.com/", "notes" => "", "avatar_display" => 3, // 3 (Gravatar, Monsterid) "reg_referer" => "external api", "reg_ip" => "xxx.xxx.xxx.xxx", "reg_useragent" => "", "social_page_facebook" => "http://www.facebook.com/MrBean", "social_page_googleplus" => "", "social_page_twitter" => "https://twitter.com/MrBean", "social_page_linkedin" => "", "social_page_flickr" => "", "social_page_vkontakte" => "", "social_page_tuenti" => "", "social_page_other" => "", "profile_page_privacy" => 0, // Página de perfil del Usuario es público "profile_page_about" => "Rowan Atkinson’s comic acting genius has created a highly original work for television. The Mr Bean series has been sold to 190 territories worldwide and has won an International Emmy and the Golden Rose of Montreux", "profile_page_show_country" => 1, // Mostrar el país del Usuario en la página de perfil "profile_page_show_web" => 1, // Mostrar el Sitio Web del Usuario en la página de perfil "profile_page_show_social" => 1 // Mostrar los enlaces a los perfiles sociales del Usuario en la página de perfil );
Generando salt, timestamp, signature y enviando la solicitud
*** El siguiente bloque de código es común para todas las solicitudes firmadas ***
// Recopilando la información del API y URL Base $API_URL = "https://www.midominiowebtv.tv/api.php"; $API_KEY_ID = "1b323a1cb879fd4e66530fbad07a32ee"; $API_SHARED_SECRET = "MWIzMjNhMWNiODc5ZmQ0ZTY2NTMwZmJhZDA3YTMyZWViOTQ3MDJiOGM2ZTU2NjE3"; // Mantenga esto en un lugar seguro!!! // Generando salt y timestamp $salt = md5(mt_rand()); $timestamp = time(); // Generando la firma de validación // - Método por defecto: usando base64_encode(hash_hmac(...)) $signature = base64_encode(hash_hmac('sha256', $salt.$timestamp, $API_SHARED_SECRET, true)); // comentar esta línea si se utiliza el otro método // - Método simplificado - disponible desde v60: usando md5(). // Este método requiere que la variable $API_SIGNATURE_GENERATION_MODE = 1; en el archivo config/Config.inc.php.
// $signature = md5($salt."-".$timestamp."-".$API_SHARED_SECRET); // debe "des-comentar" esta línea si se utiliza el método simplificado // Añadiendo timestamp, salt, key y signature a las variables GET $GET_VARS["timestamp"] = $timestamp; // UTC timestamp $GET_VARS["salt"] = $salt; $GET_VARS["key"] = $API_KEY_ID ; // The API Key ID: This is public and is used by the API to identify the application; $GET_VARS["signature"] = $signature; // Creando la URL de la solicitud. Tenga presente que si no utiliza la función interna de PHP // para crear la solicitud HTTP entonces no se olvide de codificar los valores con URL Encode $REQUEST_URL = $API_URL."?".http_build_query($GET_VARS); // Lo anterior construirá una URL del como .../api.php?go=api_subject&do=api_action&etc... // Creando un recurso cURL con las opciones apropiadas $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $REQUEST_URL); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $POST_VARS); // If your PHP host does not have a valid SSL certificate, you will need to turn off SSL // Certificate Verification. This is dangerous (!), and should only be done temporarily // until a valid certificate has been installed curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Turns off verification of the SSL certificate. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Turns off verification of the SSL certificate. // Enviando la solicitud al API $response = curl_exec($ch); // Procesando la respuesta if (!$response) { echo 'Llamada al API falló'; } else { print_r(json_decode($response,true)); }