IIC2233-2015-2 / syllabus

Página principal del curso
47 stars 57 forks source link

[T07] Log In #505

Closed fgvenegas closed 8 years ago

fgvenegas commented 8 years ago

Cuando una persona se loguee es necesario redirigirlo a la pagina de mi app, que se le entregue un codigo de autorizacion, lo ingrese, y ahi pueda entrar o en teoria el deberia ingresar su usario y contrasñea y listo?

flobarrios commented 8 years ago

Pregunto lo mismo! Dado que me tengo que conectar a mi usuario, puedo usar eso:

In order to make calls to the API, you'll need an instance of the Dropbox object. To instantiate, pass in the access token for the account you want to link. (Tip: You can generate an access token for your own account through the App Console).

dbx = dropbox.Dropbox('YOUR_ACCESS_TOKEN')

O es necesario hacer lo que dice @fgvenegas?

lopezjurip commented 8 years ago

Veo que Dropbox usa el protocolo OAuth2 para la interacción con su API. Eso igual es medio complejo.

Al menos usa la versión más simple de OAuth2: refresh token. Estos dos últimos términos son claves.

Por razones de seguridad, casi ninguna API actual permite el sistema de usuario y contraseña (Basic Auth), pues es super inseguro. Se darán cuenta que cada vez que usan una app que se conecta con Facebook, esta les redirige a Facebook para pedir permisos y ustedes nunca le exponen su contraseña a la app.

paxcema commented 8 years ago

Dado eso, qué debemos hacer? Decirle al usuario que se meta a autorizar la app manualmente? Que aparezca un pop-up usando un navegador? Mostrar la página dentro de la GUI? No sale especificado :/

lopezjurip commented 8 years ago

Quizás abrirlo en una webview o cómo se llame en PyQt

fgvenegas commented 8 years ago

yo hice algo asi, con QWebView, abro un navegador en python donde el usuario se logea y saca el token y al mismo tiempo creo un widget donde debe ingresarlo para conectarse y funciona

ignaciourzuaf commented 8 years ago

A mi me pasa que abro la pagina de dropbox en python pero no me permite presionar el boton de inicio de sesion. ¿Que puedo hacer en ese caso?

Mapuentes commented 8 years ago

+1

crxzadytho22 commented 8 years ago

yo tampoco puedo apretar inicio :c alguien pudo solucionarlo?

crxzadytho22 commented 8 years ago

PD: no seria mejor que cada usuario ingrese su token, dejarlo como una variable al comienzo como con el puerto y ip..

tamycova commented 8 years ago

en que quedo estooo? se puede hacer que el usuario ingrese el token nomas o tenemos que mandarlo a la pagina de dropbox?

ghost commented 8 years ago

+1 a @tamycova, o podemos ofrecer las dos alternativas ? (validar en Dropbox o ingresar el token)

eduguerra commented 8 years ago

+1 a que pidamos solo el token para hacer login

crxzadytho22 commented 8 years ago

tareos ayuden :C

MainScientist commented 8 years ago

por que no les funciona el QtWebKit.QWebView? le estan poniendo algun stylesheet?

flobarrios commented 8 years ago

que paso con esto alfinal? podremos usar simplemente el token???

crxzadytho22 commented 8 years ago

podrían responder los ayudantes :(

lopezjurip commented 8 years ago

Hey @bamavrakis yo te elijo!

mbucchi commented 8 years ago

Yo les recomiendo que manden al usuario a la página de dropbox a autorizar la app. Esto le debiese entregar el Token al usuario que autoriza a su app. Posteriormente ustedes simplemente le piden ese token como input en la interfaz. Es decir algo como esto:

- El usuario corre su programa
- Se abre el browser pidiendo la autorización
- El usuario acepta
- Se le muestra un token
- Lo ingresa en su interfaz
- Siguen con el resto de su programa normalmente

Saludos!

mbucchi commented 8 years ago

A todo esto, la parte del browser y token viene hecho por Dropbox, no es que ustedes tengan que programar esto. Una vez que lo manden a esta página y ellos acepten, se debiese ver algo como esto

solicitud_de_api_autorizada_-_dropbox
mbucchi commented 8 years ago

Si siguen con problemas logrando hacer lo que les dije. Lean la documentación de HTTP de Dropbox. En ese lugar, vean los requests:

- /oauth2/authorize
- /oauth2/token

Con esos dos les debiese bastar para obtener el token de un usuario programáticamente y no les debiese tomar mucho más de 5 líneas de código.

Saludos!