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" />


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.

Existe un objeto de VBScript asociado a la conexión de Twitter.

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

Lo mismo que el método anterior, pero éste olvida todos los usuarios recordados.

      Set obj01 = CreateObject("Twitter")
      obj01.RevokeAllTokens
      Set obj01 = nothing
  • 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.