tb-social

Social client


License
ISC
Install
npm install tb-social@1.0.3

Documentation

tb-social

Esta módulo permite realizar acciones sobre distintas redes sociales como Facebook, Twitter, Google Plus y LinkedIn

Para utilizar los distintos servicios primero es necesario instalar su respectivo módulo y luego configurar las credenciales en la aplicación.

Módulos de servicios:

  • tb-social-facebook
  • tb-social-twitter
  • tb-social-gplus
  • tb-social-linkedin
  • tb-social-vimeo
  • tb-social-flickr

Configuración

- Configuración desde interfaz administrativa:

En la aplicación seleccionada acceder a la sección "Configuración" y luego a la pestaña "Social".

Una vez en la pestaña se pueden observar las secciones para completar los distintos servicios.

Cada servicio requiere distintos campos que rellenar:

  • Facebook:

    • Application ID
    • Application Secret
  • Twitter:

    • Consumer Key
    • Consumer Secret
  • LinkedIn:

    • Client ID
    • Client Secret
  • Google Plus:

    • Client ID
    • Client Secret
  • Vimeo:

    • Client Id
    • Client Secret
    • Access token (Opcional)
  • Flickr:

    • Client Key
    • Client Secret
    • Access token (Opcional)
    • Access Secret (Opcional)

- Configuración manual:

La configuración de cualquier servicio se realizar en el archivo config.json que se encuentra en la carpeta app. Para ellos hay que incluir y modificar un objeto llamado socialOptions y agregar un objeto interno para cada servicio que se utilizará que contendrá las credenciales. La clave de cada objeto será especial para cada servicio usando las siguientes claves para cada servicio:

  • Facebook -> facebook
  • Twitter -> twitter
  • Google+ -> gplus
  • LinkedIn -> linkedin
  • Vimeo -> vimeo
  • Flickr -> flickr

La información que contendrá cada objeto depende del servicio, pero en general todos necesitan:

  • Un identificador de la aplicación registrada en el servicio.
  • Una clave secreta de la aplicación registrada en el servicio.

El nombre para cada uno de dichos campos para cada servicio, se muestra junto con un ejemplo a continuación:

...
"socialOptions": {
  "facebook": {
    "appId": myFacebookClientId,
    "appSecret": myFacebookSecretKey
  },
  "twitter": {
    "consumerKey": myTwitterClientId,
    "consumerSecret": myTwitterSecretKey
  },
  "gplus": {
    "clientId": myGPlusClientId,
    "clientSecret": myGPlusSecretKey
  },
  "linkedin": {
    "clientId": myLinkedInClientId,
    "clientSecret": myLinkedInSecretKey
  },
  "vimeo":{
    "clientId": "myVimeoClientId",
    "clientSecret": "myVimeoClientSecret",
    "accessToken": "myVimeoDefaultAccessToken"
  },
  "flickr":{
    "clientKey": "myFlickrClientKey",
    "clientSecret": "myFlickrClientSecret",
    "accessToken": "myFlickrDefaultAccessToken",
    "accessSecret": "myFlickrDefaultAccessSecret"
  }
}
...

Modo de uso

Los servicios se pueden utilizar de dos maneras:

- Mediante Class Api del modelo (Servidor):

Las llamadas al Class Api se realizan utilizando las funciones del módulo social accediendo a él a través del objeto global App como en el siguiente ejemplo.

var service = "facebook"; // Servicio
var accessToken = "…";
var tokenSecret = "…";
var Social = App.social.forService(service, accessToken, tokenSecret)
  .then(client => {})
  .catch(err => {});

- Mediante REST Api (Servidor o cliente):

Realizando peticiones a los servicios de social con el siguiente formato de URL:

https://[domain]:[port]/api/v[apiVersion]/srv/social/

Funcionalidades

A continuación se detallarán las funcionalidades de las que dispone el módulo.

- Hacer una publicación / Subir un archivo:

• REST Api:

Petición:

HTTP Method URL
POST / POST Multipart https://[domain]:[port]/api/v[apiVersion]/srv/social/post?service=<service>

Parámetros del query:

Clave Tipo Opcional Descripción
service String Servicio de social (valores: facebook, twitter, gplus, linkedin)

Parámetros Body:

Clave Tipo Opcional Descripción
fileUpload File X (Sólo para POST Multipart) El archivo que se va a subir
token String El access token del usuario
tokenSecret String X (Sólo para twitter) Access Token Secret del token del usuario.
data Object Objeto con la información que se va a publicar.
data.message String Mensaje que se quiere publicar
data.link String X Link que se incluirá en la publicación
data.title String X Título que se incluirá en la publicación de archivos
data.description String X Descripción que se incluirá en la publicación de archivos
data.private Boolean X Indica si la publicación será privada o no (Vimeo, Flickr)

Respuesta:

Actualmente la respuesta varía en función del servicio por el que se realiza la publicación.

Ejemplo Publicación Twitter:
  • Petición:
 POST:  http://a2server.a2system.net:1234/api/v1/srv/social/post?service=twitter
  • Body:
{
  "token":"1xxxx377xx-OI3dlxxxxyI3tRzvczGxxxZtcyCxsvo8qxxxxli",
  "tokenSecret":"oS9xxxxNUxxxJ3ryY3xUl270xxxSwgBcekzRjvmhxxxD5",
  "data":
    {
      "message":"Test post",
      "link":"https://www.google.com"
    }
 } 
Ejemplo Subida de archivo Vimeo (Multipart):
  • Petición:
 POST Multipart:  http://a2server.a2system.net:1234/api/v1/srv/social/post?service=vimeo
  • Parámetros Multipart:
 "fileUpload": <archivo a subir> 
 "token":"userVimeoToken"
 "data.title": "My video title"
 "data.description": "My video description"
 "data.private": "true"
Ejemplo Publicación desde link Vimeo:
  • Petición:
 POST Multipart:  http://a2server.a2system.net:1234/api/v1/srv/social/post?service=vimeo

ó

 POST:  http://a2server.a2system.net:1234/api/v1/srv/social/post?service=vimeo
  • Parámetros Multipart:
 "link": <link a video a subir> 
 "token":"userVimeoToken"
 "data.title": "My video title"
 "data.description": "My video description"
 "data.private": "true"

ó

{
  "token":"userVimeoToken",
  "data":
    {
      "title":"My video title",
      "description": "My video description",
      "link":"https://www.google.com"
      "private": true
    }
 } 

• Código Javascript:

En primer lugar hay que obtener un objeto para realizar utilizar el servicio como se explica en la sección "Modo de uso" y luego realizar la publicación.

- Información para obtener cliente del servicio:
Clave Tipo Opcional Descripción
service String Servicio de social (valores: facebook, twitter, gplus, linkedin)
token String El access token del usuario
tokenSecret String X (Sólo para twitter) Access Token Secret del token del usuario.

##### - Información para la publicación:

Clave Tipo Opcional Descripción
data Object Objeto con la información que se va a publicar.
data.message String Mensaje que se quiere publicar
data.link String X Link que se incluirá en la publicación
data.title String X Título que se incluirá en la publicación de archivos
data.description String X Descripción que se incluirá en la publicación de archivos
data.private Boolean X Indica si la publicación será privada o no (Vimeo, Flickr)
data.file File X Archivo que se va a subir (Vimeo, Flickr)
- Ejemplo:
  var service = "facebook"; // Servicio
  var accessToken = "…";
  var tokenSecret = "…";
  var data = {
    "message": "Hello world!"
  }
  var Social = App.social.forService(service, accessToken, tokenSecret)
    .then(client => {
      client.post(data)
    })
    .then(res => {})
    .catch(err => {});