Integración con Twitter
En futuras versiones del framework de Android será posible integrar Twitter con nuestra aplicación XOne.
El método a usar es definir una colección que use nodo <connection> que apunte hacia Twitter, y ésta mostrará el muro de tweets que nosotros deseemos.
La cadena de conexión simplificada es ésta:
<connection name="ConnectionToTwitter" connstring="Provider=Xone Remote Provider;ProgID=com.xone.db.twitter.TwitterConnection;Tweets Limit=50" />
Si queremos asociar una cuenta de Twitter a nuestra aplicación y no requerir ninguna interacción extra del usuario, debemos ir los ajustes de la cuenta y conseguir allí los 4 tokens necesarios, que vienen a ser la Consumer Key, el Consumer Key Secret, el Access Token y el Access Token Secret.
Se puede entender la clave de consumidor como el ID de la aplicación que usa Twitter, y el secreto de la clave de consumidor como su password.
A su vez, se puede entender el token de acceso identifica al usuario que usará Twitter en dicha aplicación, y su secreto como su password para esta aplicación.
Todo esto es necesario para que las aplicaciones que usan Twitter no guarden el usuario y contraseña de los usuarios de Twitter.
La cadena de conexión entonces tendrá este formato:
<connection name="ConnectionToTwitter" connstring="Provider=Xone Remote Provider;ProgID=com.xone.db.twitter.TwitterConnection;Twitter Consumer Key=CLAVECONSUMIDORAQUÍ;Twitter Consumer Secret=SECRETOCONSUMIDORAQUÍ;Twitter Access Token=TOKENACCESOAQUÍ;Twitter Access Token Secret=SECRETOTOKENUSUARIOAQUÍ;Tweets Limit=50" />
Ejemplo de colección sin tokens de acceso definidos ni usuario
Al no tener tokens definidos, cuando esta colección necesite hacer un startbrowse, sea mediante script, mediante content o mediante modo lista, se solicitará primero el nombre de usuario Twitter, después lanzará el navegador para que el usuario autorice a usar su cuenta.
Una vez autorizada, el usuario debe copiar el PIN de acceso que se le mostrará en la ventana del navegador y volver a la aplicación XOne, que le pedirá que lo introduzca.
Estos datos no se volverán a pedir, si no se cambia de usuario.
<coll name="Twitter" title="Twitter" connection="ConnectionToTwitter" check-owner="false" dependent="false" fontsize="8" sql="SELECT * FROM ##PREF##Twitter t1" objname="Twitter" updateobj="Twitter" notab="true" filter="" sort="" progid="ASData.CASBasicDataObj"> <connection name="ConnectionToTwitter" connstring="Provider=Xone Remote Provider;ProgID=com.xone.db.twitter.TwitterConnection;Tweets Limit=50" /> <group name="General" id="1" /> <prop name="ID" visible="0" group="1" type="N" fieldsize="30" labelwidth="8" size="255" title="ID" /> <prop name="DISPLAYNAME" visible="6" group="1" title="Usuario" type="T" fieldsize="30" fixed-text="true" size="255" labelwidth="5" /> <prop name="TWEETDESTINATION" visible="1" group="1" title="Destino" type="T" fieldsize="30" fixed-text="true" size="255" labelwidth="5" /> <prop name="TWEETTEXT" visible="15" group="1" title="Texto" type="T" fieldsize="30" fixed-text="true" size="255" labelwidth="5" /> </coll>
A continuación definimos un content. Como se puede ver, en el filter está definido el muro de tweets a usar. Si no se quiere usar un hashtag y en cambio mostrar el muro de un usuario específico, el filter será algo como filter=“USERORHASHTAG='xonetest'”
<coll name="TestTwitter" title="Menú principal" special="true" notab="true" fontsize="8" sql="" objname="" updateobj="" filter="" sort="" progid="ASData.CASBasicDataObj" autorefresh="true"> <group name="Grupo01" id="1" /> <prop name="@ContentTwitter" group="1" type="Z" title=" " width="100%" height="85%" contents="ContentTwitter" lines="6" onchange="refresh255" editmodal="true" forceonchange="true" mask="31" /> <contents name="ContentTwitter" src="Twitter" filter="USERORHASHTAG='#gatos'" /> </coll>
Si no se especifica un filtro se mostrará el muro del usuario del token de acceso.
Métodos disponibles
Existe un objeto de VBScript asociado a la conexión de Twitter.
Logout
Este método cierra la sesión y olvida los tokens de acceso de un usuario que se le especifique por parámetro.
Debido a los TOS de Twitter, es obligatorio implementar este botón.
Set obj01 = CreateObject("Twitter") obj01.Logout "nombreusuario" Set obj01 = nothing
RevokeAllTokens
Lo mismo que el método anterior, pero éste olvida todos los usuarios recordados.
Set obj01 = CreateObject("Twitter") obj01.RevokeAllTokens Set obj01 = nothing
Notas
- En este caso, añadir un nuevo elemento a la colección significa publicar en el muro del usuario del token de acceso. Por lo tanto, si el filtro está puesto al muro de otro usuario, al añadir y salvar un nuevo elemento (un tweet) no se verá en ese content.
- Debido a los Términos de Servicio de Twitter, es necesario poner un botón de “Cerrar Sesión” en la aplicación, que use el método Logout o el revokealltokens.