Red de conocimiento informático - Espacio del host - Por qué dejé de usar leancloud-Python

Por qué dejé de usar leancloud-Python

He estado prestando atención a leancloud desde hace algún tiempo. Ha anunciado soporte para muchos lenguajes de desarrollo, así como SMS, almacenamiento de objetos,

Gestión y autenticación de usuarios, push, chat. Y otros servicios son actualmente muy importantes para el desarrollo de aplicaciones móviles convencionales. Las diferentes aplicaciones móviles que desarrollamos requieren mantener diferentes backends y servicios de gestión, que son repetitivos y engorrosos de desarrollar. Si leancloud puede ayudarnos a aliviar estas tareas, realmente valdrá la pena.

La solución para migrar aplicaciones a leancloud es la siguiente:

Utilizar leancloud como almacenamiento backend, gestión de usuarios y motor de autenticación;

Utilizar python para desarrollar un sistema de gestión interfaz para ayudar a los administradores a editar artículos y publicar información;

Utilice js y oc como lenguajes de interfaz para desarrollar interfaces de usuario;

En el segundo paso, esperamos experimentar primero Los siguientes son dos casos de usuario simples:

Crear varios objetos y almacenarlos en leancloud;

Registrar un usuario, confirmar el resultado del registro y verificar el teléfono móvil y la dirección de correo electrónico proporcionados;

Simplemente

Estos son los dos casos de uso más simples, pero después de toda una noche, no se resolvieron. En primer lugar, además de los documentos oficiales, es difícil ver otros tipos de documentos en leancloud, como preguntas frecuentes,

foros, comunidades, stackoverflow; Google no puede encontrarlos de todos modos. este es el único documento oficial, que también es una estafa. Ah,

El siguiente es un fragmento de código que copié de la documentación oficial, casi sin modificaciones.

Predeterminado

# -*- codificación: utf-8 -*-#coding=utf-8import leancloudAPP_ID='temv66wvy83zurm3710wt9kir41zaza5gfu0gkhzzcf4a1yv'APP_KEY='00zuyjgtcvjs31qy7ysktd43fevoblt4e4yx 8gt46q8d'MASTER_KEY='82irmrurzr9ib2axiputuh6ul8b9zozs7qbcfpchf0t2ts80'leancloud init(APP_ID, "s/s" (APP_KEY, MASTER_KEY))usuario = leancloud.User()user.set("nombre de usuario", "admin")user.set("contraseña", "admin")usuario.set. ( "email", "admin@whhe.com")# se pueden configurar otros campos como con leancloud.Objectuser.set("phone", "415-392-0202")try: user.sign_up()except Exception, e :print e# ¡Hurra! Déjeles usar la aplicación ahora.

Problema 1: Advertencia de plataforma insegura SSL

Al ejecutar el programa en Mac OS y Linux, el registro del usuario falla y se observa por primera vez lo siguiente advertencia:

Predeterminado

/usr/lib/python2.7/site-packages/requests-2.6.0-py2.7.egg/requests/packages/urllib3/ util/ ssl_.py:79: InsecurePlatformWarning: un objeto SSLContext verdadero no está disponible. Esto impide que urllib3 configure SSL adecuadamente y puede causar que ciertas conexiones SSL fallen. Para obtener más información, consulte https://urllib3.readthedocs.org/en/latest. /security.html#insecureplatformwarning.InsecurePlatformWarning

Sin embargo, después de buscar un poco, descubrí que este parece ser un problema común de urllib3, que se puede resolver de la siguiente manera. Pero para una pregunta tan común, ni siquiera puedo ver las preguntas frecuentes.

Predeterminado

$ pip install pyopenssl ndg-httpsclient pyasn1

Problema 2: sign_up() informa el error 401

Después del problema 1 se resuelto, sign_up() siempre informará un error 401 (no autorizado). Después de casi una hora de localización, se descubrió que el error fue causado por la función de inicialización de leancloud. El uso en la guía de programación es el siguiente:

Predeterminado

leancloud.init(APP_ID, "s/s" (APP_KEY, MASTER_KEY))

Pero el manual de referencia dice esto:

Predeterminado

leancloud.client.init(APP_ID, APP_KEY, MASTER_KEY)

Ambos métodos no informarán errores de sintaxis, pero el primero no parece funcionar correctamente. Me tomó mucho tiempo. Es hora de encontrar la API detrás de esto, que es una estafa.

Pregunta 3: sign_up() permite el registro repetido

El código de prueba anterior se ejecutó dos veces seguidas y fue exitoso, y se pueden ver dos registros de usuario idénticos en leancloud fondo. . ¿Sign_up() realmente puede registrarse repetidamente de forma predeterminada? Después de buscar durante mucho tiempo, descubrí que las opciones de la aplicación se pueden configurar para habilitar la verificación del correo electrónico del usuario registrado y otras opciones. Después de verificar, se informa un error al llamar a sign_up por segunda vez.

Problema 4: sign_up() no puede obtener el motivo del error

Después de detectar la excepción sign_up(), quise imprimir la excepción para obtener el motivo del error, pero el resultado fue el siguiente excepción:

p>

Predeterminado

Rastreo (última llamada más reciente): archivo "test1.py", línea 23, en formato impreso eUnicodeEncodeError: el códec 'ascii' puede No codifica caracteres en la posición 6-16: ordinal fuera del rango (128)

Pregunta 5: Python SDK no tiene la API relevante para verificar el correo electrónico o el teléfono móvil del usuario registrado

Después de que el usuario se registre, podrá ver el fondo de la aplicación leancloud_ Habrá información del usuario en la tabla de usuarios, así como un enlace para verificar el correo electrónico, pero ¿qué pasa si proporciono esta función en mi propio fondo de Python? Pepsi está desconcertada.

Pregunta 6: Error de sintaxis en el documento oficial

La siguiente es una rutina de la guía de programación del SDK de Python de leancloud. Se puede ver que la quinta línea debe ser game_score.save(. ) en lugar de game.save ()

Predeterminado

game_score = GameScore()game_score.set('score', 42)# o game_score.score = 42game_score.set('cheatMode ', False)game_score. set('playerName', 'Marvin')game.save()# También puedes usar parámetros de palabras clave para asignar valores mientras creas el objeto game_score = GameScore(score=42, playerName='Marvin' )

En este punto, básicamente decidí rendirme, porque no sabía qué peligros encontraría si iba más allá. Obviamente, el tiempo que tomó resolver estos problemas superó con creces el tiempo. Me tomó implementar estos dos casos de uso básicos.

Resumamos las razones:

El diseño de API realmente no se considera desde la perspectiva del usuario (preguntas 3 y 5);

Hay muy pocos documentos y la documentación ha caducado (pregunta 2) ;

p>

Muchos errores (preguntas 4, 6);