Saltar al contenido
  • Inicio
  • Aviso legal,política de privacidad y política de enlaces de afiliación
  • Contacto
  • Política de cookies
  • Sobre el autor

Soloelectronicos.com

Comprender, construir, reparar y disfrutar de nuestro mundo tecnológico

Day: julio 17, 2014

Orginal proyecto de robot usando OAuth v2 para inicio de sesión o Autorizar con sólo plus.login y luego añadir servicios adicionales a la cuenta del usuario

julio 17, 2014soloelectronicosDeja un comentario

En este escenario, usted puede que  tenga un sitio que trabaje con los flujos existentes OAuth v2 , de froma más probable  que un flujo del lado del servidor. Si usted está buscando  actualizar  usar el flujo del botón de inicio de sesión, los usuarios existentes tendrán que autorizar su aplicación. Esto es porque el el botón de inicio de sesión implícitamente está solicitando las posibilidades  de inicio de sesión. Echemos un vistazo a la experiencia de cómo funcionaría este escenario!

Una demostración del flujo de actualización

En primer lugar, un vistazo a esta página:

Server-side simple inicio de sesión Demo

Si la página no se carga, puedes logout aquí. Después de conectar su cuenta, encontrará una página de autorización como los siguientes:

Screen Shot 2013-04-02 at 1.15.42 PM

Cuando llegue al sitio nuevo, firmado en a Google, estará autorizados y la página conocerá su id y puede procesar su perfil.

Ahora supongamos que queremos actualizar la cuenta del usuario para utilizar inicio de sesión para añadir a lo usuarios de Google +. Para ello, el usuario debe ingresar nuevamente, esta vez utilizando el botón de inicio de sesión como se muestra en la siguiente demostración:

One-time-código del lado del servidor inicio de sesión Demo

Veremos más información sobre por qué el usuario debe autorizar más tarde… pero el diálogo se verá como sigue:

Screen Shot 2013-04-02 at 1.01.20 PM

Después de autorizar nuevamente, la cuenta del usuario se actualizará entonces para aprovechar las nuevas características de Google + Sign-in.

Ahora echemos un vistazo a los pasos utilizados para actualizar su base de datos back-end para reflejar la actualización.

Actualización de la información de usuario en el modelo de datos del sitio

En primer lugar, recordemos el ejemplo simple donde se solicitó el ámbito userinfo.email y el usuario fue autorizado mediante el flujo convencional de lado del servidor. En este punto, su sitio podría tener un modelo para el usuario similar al siguiente:

before

Supongamos que el usuario ha creado datos asociados con ese flujo, así que  podría representar datos adicionales específicos a su sitio. Se ha establecido su ID de cuenta, porque se devuelve con el alcance de plus.email las credenciales de la cuenta del usuario ya existe en esta base de datos en el sitio.

A continuación, después de que ha actualizado su sitio web para tener el nuevo botón de inicio de sesión y reautoriza el usuario, puede actualizar los datos existentes en su sitio para el usuario y puede agregar la información adicional que regresó de Google +. Desde una perspectiva de fondo, el modelo ahora podría ser algo así:

after

El token de actualización y el token de acceso, destacados en rojo, se actualizan después el código-intercambio ocurre en el flujo de una sola vez-código del servidor. Esto sucede porque las nuevas credenciales tienen acceso a los ámbitos adicionales. La tabla VisibleUser también se rellena con todos los usuarios visibles en el sitio para que el gráfico social puede ser aprovechado.

A continuación, echemos un vistazo a los programación pasos para actualizar su sitio.

Pasos para actualizar el sitio

Echemos un vistazo a lo que se hizo para lograr esta ruta de actualización. En primer lugar, los alcances del proyecto API deben actualizarse para incluir la API de Google +. Esto se hace en el alcance de Google + desde la consola API:

console

A continuación, necesita ser actualizado para incluir el nuevo botón de inicio de sesión como se describe en la Página Google + desarrolladores documentación, Google + signo-enel sitio. Resumido brevemente, el código de marcado debe añadirse al sitio:

    <button
        data-scope="https://www.googleapis.com/auth/plus.login"
        data-requestvisibleactions="http://schemas.google.com/AddActivity"
        data-clientId="YOUR_CLIENT_ID"
        data-accesstype="offline"
        data-callback="onSignInCallback"
        data-theme="dark"
        data-cookiepolicy="single_host_origin">
    </button>

.. .y una devolución de llamada de inicio de sesión tendrá que crearse puestos de datos al componente del lado del servidor:

    /**
     * Hides the sign-in button and connects the server-side app after
     * the user successfully signs in.
     *
     * @param {Object} authResult An Object which contains the access token and
     *   other authentication information.
     */
    onSignInCallback: function(authResult) {
      $('#authResult').html('Auth Result:<br/>');
      for (var field in authResult) {
        $('#authResult').append(' ' + field + ': ' + authResult[field] + '<br/>');
      }
      if (authResult['access_token']) {
        // The user is signed in
        this.authResult = authResult;
        // After we load the Google+ API, render the profile data from Google+.
        gapi.client.load('plus','v1',this.renderProfile);
      } else if (authResult['error']) {
        // There was an error, which means the user is not signed in.
        // As an example, you can troubleshoot by writing to the console:
        console.log('There was an error: ' + authResult['error']);
        $('#authResult').append('Logged out');
        $('#authOps').hide('slow');
        $('#gConnect').show();
      }
      console.log('authResult', authResult);
    }

Puede aprender más sobre el flujo de una sola vez-código comenzando con el Google + PHP Quickstart,

En los casos donde el sitio ya tiene un usuario, la cuenta puede consultarse por su ID de Google, que era más probable un índice utilizado anteriormente cuando las credenciales de usuario desde el ámbito de userinfo.email. Haciendo coincidir el ID a la que regresó desde el ámbito plus.login, se ha determinado que se han creado antes de la cuenta y las credenciales pueden ser actualizadas para las credenciales de autorización a los servidores de autenticación de Google. Una vez que haya identificado al usuario actualizar, la actualización persisten token y token de acceso necesitan reemplazarse con los nuevos.

Lo que sucede detrás de las escenas es que el flujo de OAuth en el sitio original está solicitando solamente el alcance de userinfo.email. En el sitio actualizado, el botón de inicio de sesión está solicitando implícitamente el alcance plus.login para que el usuario debe pedirá otra vez para los permisos. Cuando el usuario autoriza otra vez en el nuevo sitio, el identificador de la cuenta del usuario Google quedará igual, así que la cuenta otra vez fácilmente puede ser emparejada para reflejar los permisos actualizados.

Agregar adicionales a la cuenta de un usuario

En relación con el primer ejemplo este seria el tipico de cuando quiere un usuario  inscribirse para un servicio sin necesidad de conceder todos los permisos para su aplicación y luego necesitar agregar adicional, opcional, ámbitos a la cuenta asociada. Por ejemplo, digamos que tienes un servicio que utiliza Google + para ingresar y crear una cuenta pero luego más tarde que quiera añadir acceso a de un usuario Google Calendar y Google Drive. Lo que puede hacer es crear una página de configuración fija dinámicamente los alcances en el botón de inicio de sesión y luego el botón para volver a autorizar al usuario como se indica antes.

ADVERTENCIA: Este es un truco que funciona por ahora, pero no es necesariamente una mejor práctica, Uselo bajo su propio riesgo!

Asustar a texto a un lado… vamos a ver cómo esto podría funcionar.

  1. El usuario se suscriba, usted solicita solamente los alcances requeridos para inscribirse / firma en el sitio como se ve en el one-time-código original de demo.
  2. Más tarde, trae al usuario a una página de configuración donde puede seleccionar diversos ámbitos y luego agregar dinámicamente estos ámbitos para una solicitud de autorización.

La demostración siguiente realiza algunos trucos para agregar mediante programación y cambiar los alcances que se solicitan y luego renderizar el botón de inicio de sesión mediante programación:

Demostración: Trucos y hacks para Google + signo de alcances de la autorización

El (definitivamente no producción, hay variables globales!) código para modificar dinámicamente los ámbitos es como sigue:

  var calendarScopeVar = '';
  var driveScopeVar= '';

  function toggleCalendar(){
    if (calendarScopeVar == ''){
      calendarScopeVar = ' https://www.googleapis.com/auth/calendar';
    }else{
      calendarScopeVar = '';
    }
    render();
  }

  function toggleDrive(){
    if (driveScopeVar == ''){
      driveScopeVar = ' https://www.googleapis.com/auth/drive';
    }else{
      driveScopeVar = '';
    }
    render();
  }
  </script>

Casillas de verificación se agregan que alternar los alcances:

  <input type="checkbox" onClick="toggleCalendar()"></input>Toggle Calendar<br>
  <input type="checkbox" onClick="toggleDrive()"></input>Toggle Drive<br>
  <div id="outer">
  <div id="gConnect">
    <button id="customBtn"></button>
  </div>
  </div>

Cada vez que se cambian las casillas de verificación, volver a procesar el botón de inicio de sesión como se muestra en el siguiente código.

  function render() {
    $('#gConnect').empty();
    $('#gConnect').html('<button id="customBtn"></button>');
    var scope = 'https://www.googleapis.com/auth/plus.login';
    scope += ' https://www.googleapis.com/auth/userinfo.email';
    scope += calendarScopeVar;
    scope += driveScopeVar;

    gapi.signin.render('customBtn', {
      'callback': 'onSignInCallback',
      'clientid': '{{ CLIENT_ID }}',
      'cookiepolicy': 'single_host_origin',
      'requestvisibleactions': 'http://schemas.google.com/AddActivity',
      'scope':scope
    });
  }

Cuando el usuario hace clic en Inicio de sesión, se solicitan los alcances y el usuario será nuevamente autorizado. La siguiente imagen muestra el cuadro de diálogo que aparece cuando se selecciona todos los ámbitos opcionales.

upgrade_flow

Sobre la terminación de la solicitud de autorización, intercambiarán otra vez del lado del servidor para obtener y actualizar sus tokens de autorización código. Después de que el código de autorización se intercambia, las credenciales devueltas estará autorizadas a tienen los alcances adicionales para agenda o en coche. Al finalizar el flujo de autorización, debe reemplazar las credenciales existentes con los actualizados que tienen ahora los nuevos parámetros de autorización conjunto. Nota tenga cuidado de no eliminar los ámbitos que ya ha solicitado y necesidad – plus.login y userinfo.email en este ejemplo.

Recursos adicionales

Así que ahí tiene, modernización y sustitución de ámbitos usando Google + signo-en el botón. Esto probablemente ha conseguido pensando en cómo puede hacer esto en sus propios sitios y en sus propios experimentos

En algunos casos raros, tiene sentido para procesar los mensajes interactivos selectivamente, retrocediendo al botón compartir. Por ejemplo, debería hacer esto cuando cuando se le pedirá que firme pero todavía podrían compartir contenido sin ser firmado en Google + en su sitio. En la mayoría de los casos usted debe no estar haciendo esto porque automáticamente pedirá al usuario que entra a su sitio si no lo han hecho ya y el botón publicar interactivo es más interesante que el botón de compartir.

 

De todos modos, si quiere hacer esto (y otra vez, esto es en casos extremadamente raros) el siguiente código va a empezar.

En definitiva, la página representará un post interactivo de la siguiente manera cuando ha iniciado sesión el sitio:

Screen Shot 2013-03-11 at 10.38.38 AM

Cuando no ha iniciado sesión, la página dará un cuadro de diálogo compartir:

Screen Shot 2013-03-11 at 10.38.22 AM

El siguiente código HTML muestra el marcado donde tanto el post interactivo y botones de acción se procesan dentro de etiquetas div oculto:

<html>
<head>
  <title>Google+ JavaScript Quickstart</title>
  <script type="text/javascript">
  (function() {
    var po = document.createElement('script');
    po.type = 'text/javascript'; po.async = true;
    po.src = 'https://plus.google.com/js/client:plusone.js';
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(po, s);
  })();
  </script>
  <!-- JavaScript specific to this application that is not related to API
     calls -->
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" ></script>
</head>
<body>
  <!-- Place the tag where you want the button to render -->
  <div id="ipost">
    <div
      class="g-interactivepost"
      data-contenturl="https://plus.google.com/pages/"
      data-contentdeeplinkid="/pages"
      data-clientid="YOUR_CLIENT_ID"
      data-cookiepolicy="single_host_origin"
      data-prefilltext="Engage your users today, create a Google+ page for your business."
      data-callback="onInteractiveCallback"
      data-calltoactionlabel="CREATE"
      data-calltoactionurl="http://plus.google.com/pages/create"
      data-calltoactiondeeplinkid="/pages/create">
    <button>Tell your friends</button>
    </div>
    <button id="disconnect">Disconnect</button>
  </div>
  <div id="share">
    <g:plus action="share"></g:plus>
    <span id="signinButton">
      <span
        class="g-signin"
        data-callback="signinCallback"
        data-clientid="YOUR_CLIENT_ID"
        data-cookiepolicy="single_host_origin"
        data-requestvisibleactions="http://schemas.google.com/AddActivity"
        data-scope="https://www.googleapis.com/auth/plus.login">
      <u>Click to upgrade</u>
      </span>
    </span>
  </div>
</body>

El javascript siguiente configura el botón desconectar y agrega Controladores para iniciar devolución de llamada para el botón publicar interactivo.

 

$(document).ready(function() {
  $('#disconnect').click(disconnect);
});

function onInteractiveCallback(authResult){
  if (authResult['error']) {
    // There was an error, which means the user is not signed in.
    // As an example, you can handle by writing to the console:
    console.log('There was an error: ' + authResult['error']);
    $('#authResult').append('Logged out');
    $('#authOps').hide('slow');
    $('#gConnect').show();
    $("#share").show();
  } else {
    $("#ipost").show();
    $("#share").hide();
  }
}

function disconnect(){
 // Revoke the access token.
 $.ajax({
   type: 'GET',
   url: 'https://accounts.google.com/o/oauth2/revoke?token=' +
       gapi.auth.getToken().access_token,
   async: false,
   contentType: 'application/json',
   dataType: 'jsonp',
   success: function(result) {
     console.log('revoke response: ' + result);
     $('#authOps').hide();
     $('#profile').empty();
     $('#visiblePeople').empty();
     $('#authResult').empty();
     $('#gConnect').show();
   },
   error: function(e) {
     console.log(e);
   }
 });
 $("#ipost").hide();
 $("#share").show();
}

Cuando la señal de llamada falla cuando se activa de modo inmediato indicando que el usuario no está firmado en, se procesa la div mostrando el botón compartir junto con el Google + signo código. Si el usuario firma, consiguen el botón interactivo puesto, si se desconectan, verán el botón compartir.

Proyecto de demostración, fuentes en GitHub aquí.

]]> http://gusclass.com/blog/2013/03/11/selectively-Rendering-Interactive-posts/feed/ 3 http://gusclass.com/blog/2012/12/27/Remote-Mounting-ssh-filesystems-from-Windows-8/http://gusclass.com/blog/2012/12/27/remote-mounting-ssh-filesystems-from-windows-8/#comments Jue, 27 de diciembre de 2012 17:45:54 + 0000 http://gusclass.com/blog/?p=879 Hay una serie de buenas razones para SSH montar sistemas de archivos de Windows, y hay una gran biblioteca y utilidad, Dokan SSH Filesystem, que hace que sea muy fácil de hacer.

 

En primer lugar, debe Descargar la biblioteca Dokan. Este es un instalador, debe habilitar el modo de compatbility a fin de ejecutar. Haga clic derecho sobre la aplicación y vaya a propiedades. Entonces usted necesitará configurar su configuración para ser como el siguiente:

Cuando se ejecuta el instalador, se instalará la biblioteca y estará listo para instalar la utilidad.

Ahora tiene que instalar la utilidad de Dokan SSHFS. Una vez haya descargado la utilidad, ejecutarla como lo haría cualquier aplicación y luego le permitirá añadir un sistema de archivos remoto. La captura de pantalla siguiente muestra un ejemplo con mi servidor compartido de montaje:

Naturalmente, debes ingresar tu nombre de usuario y contraseña si éste fuera su anfitrión. Ahora, cuando hace clic en conectar, se montará la unidad y puede mover archivos a y de él como lo haría cualquier unidad de disco.

]]> http://gusclass.com/blog/2012/12/27/Remote-Mounting-ssh-filesystems-from-Windows-8/feed/ 5 http://gusclass.com/blog/2012/08/15/Rendering-schema-org-Markup-for-Content-Behind-a-paywall/http://gusclass.com/blog/2012/08/15/rendering-schema-org-markup-for-content-behind-a-paywall/#comments miércoles, 15 de agosto de 2012 15:02:14 + 0000 http://gusclass.com/blog/?p=628

 

an example of a paywall Uno de los retos con momentos de escritura a la página de un usuario Google + historia es que necesitas una dirección URL de destino para pasar a la API y que dirección URL de destino debe contener microdatos apropiado para Google + a utilizar para calcular el contenido que aparece en la historia. Por ejemplo, digamos que soy un editor que crea que requieren entrar a leer artículos y los artículos se mantienen deliberadamente detrás de una página de inicio de sesión. Cuando un usuario Lee un artículo, todavía quiero escribir momentos de su historia pero no tengo una página legible por Google ver. ¿Qué debo hacer?

 

Una solución: páginas de inicio de sesión personalizado con microdatos Sinopsis

En esta estrategia, se crea una página de inicio de sesión personalizado ya sea con una sinopsis breve del artículo descrito en microdatos contenida en las etiquetas de marcado o meta contenidos. Se describirán dos maneras de representar los datos para ilustrar tanto un enfoque perezoso y un enfoque más sólido. La ventaja de este enfoque es que los clientes que llegan a su sitio será capaces de ver un teaser para el contenido que ofrece a premium suscrito clientes y usted puede ser capaz de atraerlos a inscribirse para su servicio, registrarse y así sucesivamente.

Qué no hacer: un enfoque marcado esquema programático escuchar perezoso

En nuestro primer acercamiento, un enfoque perezoso, nos va ser dinámicamente prestando el contenido basado en parámetros de entrada. En este enfoque, simplemente pasar parámetros a tu página de inicio de sesión y estos parámetros representará el schema.org marcado de la página, momentos escritas a la historia que contienen estos parámetros y harían que los datos adecuados a la historia. Se advierte previamente que principalmente esto se demuestra como un contraejemplo porque es insegura e ilustra qué no hacer. Sería fácil para un usuario malintencionado para hacerla aparecer como si estás dando referencias a virtualmente cualquier contenido que engañan tu página de renderizado.

Un recordatorio sobre el ejemplo siguiente, no lo haga, es un buen prototipo para una solución más integral a emergiendo escuchar contenido en una página de inicio de sesión, pero es insegura. Dicho esto, he creado (y organizado) un script Perl CGI que se extinguirían dinámicamente Schema.org marcado para el tipo de artículo. La esencia puede ser determinada desde el siguiente fragmento:

#!/usr/bin/perl
use CGI;

my $q = CGI->new;

my $img = $q->param("i");
my $title = $q->param("t");
my $description = $q->param("d");

print qq|
<!DOCTYPE html>
...
...
...

Dentro del citado bloque, rendirán un HTML simple para el contenido del esquema que se pasa como parámetros a la URL.

<div itemscope="http://schema.org/Article" class="hero-unit">
  <h1 itemprop="title">$title</h1>
  <p itemprop="description">$description</p>
  <img itemprop="image" src="$img">
  ...
</div>

En este punto, el contenido extinguirían dinámicamente schema.org marcado basado en los parámetros pasados al script. Un indicador de inicio de sesión y registrarse se procesa en la página porque el usuario no está firmado. Puede ver este ejemplo en la práctica en esta página dando una vista previa a un artículo sobre las bicicletas fixie. Para el ojo, también observará algún código Bootstrap de Twitter que solía bastante arriba de la página. Puede utilizar las herramientas de Google Webmaster para ver cómo el esquema es ser analizado por los motores de búsqueda. Este enfoque tiene un número de seguridad, contenido y concisión temas que voy a probar y dirección en un enfoque mejorado.

Un mejor enfoque: representación explícitamente contenido basado en el contenido de su artículo

Si va a proporcionar contenido premium detrás de un muro de pago o inscripción, probablemente ya tienes una base de datos que contiene los atributos de su contenido. Si los datos ya están, ¿por qué no reutilizarlo para la vista previa? Como ejemplo,  una base de datos con las siguientes filas para demostrar esto:

ID Título Descripción imageURL cuerpo
1 Mira una fixie Claramente no eres lo suficientemente frío como para leer este artículo a menos que usted se inscribe http://wheresgus.com/fixie.jpg Contenido artículo glorioso que he creado cuidadosamente

Como pueds ver, hay una identificación del artículo, título, descripción, imageURL y cuerpo. Un ejemplo más complejo podría incluir otras características interesantes como el autor y así sucesivamente. Lo que haremos a continuación es usar este contenido [de la base de datos] para ambos render el contenido de la vista previa, así como el artículo. A partir del código Perl, vamos a ver cómo se conectaría el DB, una base de datos MySQL en mi caso, a las variables en lugar de utilizar parámetros CGI. Esto es exactamente lo mismo que el ejemplo anterior con una sola excepción, se rellenan las variables utilizando los campos de db y el contenido es compartido entre el artículo y la vista previa / muro de pago:

 

my $db   = "dbname";
my $host = "host";
my $port = 3306;
my $username = "username";
my $pass = "pass";

print $dbpath;

my $dbpath = "DBI:mysql:" . $db . ":host=" . $host;#. ":" . $port;

my $artID = $q->param("id");
my $skipPaywall = $q->param("skippaywall");

my $dbh = DBI->connect($dbpath, $username, $pass
             ) || die "Could not connect to database: $DBI::errstr";

my $sth = $dbh->prepare("select title, description, imgURL, content from article where id=?");

$sth->execute($artID);
my @result = $sth->fetchrow_array();

my $title       = $result[0];
my $description = $result[1];
my $img         = $result[2];
my $content     = $result[3];

$dbh->disconnect();

print $q->header;
print $q->start_html("");

Ahora se rellenan las variables de la base de datos en contraposición a la URL. Puedes ver la página teaser en acción, también, usted puede pasar una bandera de depuración para representar el contenido real de la prueba.

Un par de cosas importante en esta mejora en el primer ejemplo:

  • El esquema que se genera para el artículo es consistente con el artículo y también se procesa en el artículo. Esto funciona en el espíritu de contenido Schema.org, todas las entidades están representadas como mejor pueden estar en todas las instancias de ese contenido.
  • Se fija el esquema que se representa a ese contenido específico. Como tal, no pueden ser manipulados parámetros cuando se pasa a la secuencia de comandos para generar microdatos arbitraria.
  • Todavía puedes escribir momentos a la historia de un usuario que puede ser leído por la API de la historia y que también puede con seguridad ser compartida por el usuario si deciden sin arriesgar los clientes burlar su muro de pago.

Las mejores prácticas y consideraciones

Aunque este enfoque ejemplo funciona, todavía el autor ve una serie de posibles problemas con él. Cuando se toma un enfoque así, asegúrese de que piensa en varias cosas que pudieran hacer los usuarios malintencionados. Por ejemplo, qué pasa si un usuario malintencionado:

  • Descubre cómo estás escribiendo estos momentos y autores una página de destino que no es apropiada para su sitio web (SPAM, contenido maduro, etc.)
  • Parodias de formas para generar momentos que no están destinados a ser prestados por su servicio
  • Falsifica el camino a su momento para una cuenta que no es su propio (por ejemplo genera un momento para su amigo de cuenta y escribe en su historia)
  • Formula las condiciones para representar el momento y luego incumple información privada (parcialmente) desde su sitio
  • Manipula los parámetros para generar momentos que no pretenden ser creado con su servicio (por ejemplo check-in para los lugares que no han sido)

Todos estos riesgos pueden reducirse mediante diseño cuidadoso y atento examen alrededor como personas potencialmente podrían estar accediendo y momentos de escritura basado en su contenido.

Una nota final, habilitar schema.org marcado en su página tiene otro beneficio más allá que la escriba momentos específicos para el contenido: los motores de búsqueda que se arrastran su sitio será capaces de analizar el marcado esquema para crear experiencias ricas en resultados de búsqueda. Cuando se considera cómo acercarse a una vista previa de apoyo, recuerda también las otras maneras que este contenido será utilizado y prestado.

]]> http://gusclass.com/blog/2012/08/15/Rendering-schema-org-Markup-for-Content-Behind-a-paywall/feed/ 0 http://gusclass.com/blog/2012/08/10/Building-and-running-the-Oscar-Code/http://gusclass.com/blog/2012/08/10/building-and-running-the-oscar-code/#comments viernes, 10 de agosto de 2012 14:03:12 + 0000 http://gusclass.com/blog/?p=599  

 

Éste será probablemente el artículo concluyente para el proyecto de OSCAR. Algunos desarrolladores han tenido preguntas acerca de construir, instalar y ejecutar la aplicación y las instrucciones generales siguientes deben ponerte en marcha.En definitiva, será obtener el código, poner en marcha el proyecto, construir utilizando visual studio, desplegar el código en un PC que será sentarse en el robot y luego a configurar y ejecutar el servidor y el lugar de reunión.

Uso

Para construir el proyecto:

  • Descargar el código fuente del proyecto y ponerlo en la carpeta del proyecto recomendado:
  • Descargar la Procrastineering iRobot biblioteca utilizado para el proyecto
  • Reemplazar los archivos que faltan en la carpeta del proyecto, WebServiceRobotController/ConsoleApplication1, con los correspondientes archivos, UPnP.cs y iRobotCreate.cs del proyecto Procrastineering
  • Compilar el proyecto utilizando Microsoft Visual Studio Express o el Microsoft Windows SDK para Windows 7 y .NET Framework SDK

Para ejecutar el proyecto:

  • (Opcional) Instalar la aplicación hangout especifica la ubicación del archivo XML Hangout Gadget de su servidor web o utilizando la ruta XML de ejemplo
  • Poner la salida binaria de la construcción del proyecto en una PC en la parte superior una Roomba
  • Conectar el robot al PC usando un cable USB o serie
  • Iniciar el servidor ejecutando el binario que construyó. El servidor será puesta en marcha y conectar con el robot que ha conectado.
  • (Opcional) uso un servicio como localtunnel para que el servidor disponible públicamente
  • Iniciar un hangout y añadir la aplicación hangout
  • Coloque la ruta (URL) del servidor de Robot en el lugar de la aplicación
  • Ahora usted debe ser capaz de controlar el robot desde el lugar de reunión

Algunos extra consejos y resolución de problemas

El proyecto de construcción sin utilizar Visual Studio

El autor ha creado un  vídeo sobre cómo compilar y ejecutar proyectos usando el SDK de Windows:

¿Puerto COM mal?

Cuando el servidor arranca, intenta utilizar el puerto de iRobot predeterminado si el cable está conectado al puerto USB (COM3). Si está utilizando un puerto diferente, la aplicación debe fallar con gracia y le pedirá otro puerto. Cuando esto sucede, puso en su puerto, mayúsculas y minúsculas, por ejemplo COM1, como entrada, y debe ser bueno para ir.

¿Configuración de Localtunnel?

Para ejecutar correctamente localtunnel en Windows, usted debe Primero instalar CYGWIN. Usando las versiones no-cygwin de Ruby con localtunnel no funciona. No me fijé mucho en esto pero creo que tampoco están utilizando UNIX estilo caminos o sólo utilizan tubos de UNIX. En la práctica, encontré que localtunnel estaba cerrando mi corriente después de aproximadamente 5 minutos, no estoy seguro si esto fue planeado, pero es algo a tener en cuenta.

Métodos abreviados de teclado

Controles WASD y cambiar la URL

Para los siguientes atajos de teclado de JavaScript, usted debe estar usando un Mac, no tengo idea por qué tomé esta decisión, pero tenía sentido en ese momento. Mantenga pulsada la mierda + Alt / opción + Control llaves (no la clave de Apple) y luego presione o WASD para videojuegos como controles o U para cambiar la URL.

Esto es útil para si el túnel se cae o su servidor cambia IPs mientras está funcionando el lugar de reunión.

 

 

 

 

 

 

 

 

 

 

 

Compartir con:

  • Facebook
  • Imprimir
  • Twitter
  • Skype
  • Pinterest
  • Tumblr
  • LinkedIn
  • Telegram
  • Correo electrónico
  • Reddit
  • Pocket
  • WhatsApp

Me gusta esto:

Me gusta Cargando...
Electronica General, Utilidades y SWdo OAuth v2, oauth, para inicio de sesión o Autorizar con sólo plus.login y luego añadir servicios adicionales a la cuenta del usuario, proyecto con irobot, proyecto irobot con servidor

Búsqueda en soloelectronicos

Follow Soloelectronicos.com on WordPress.com

Haz clic para seguir este blog y recibir notificaciones de nuevos mensajes por correo electrónico.

Únete a 3.650 seguidores más

Comunidad soloelectronicos

Ultimas entradas

  • Obtener la fecha y hora del servidor NTP con ESP32 agosto 11, 2022
  • Cómo usar un módulo de reloj en tiempo real (DS3231) agosto 8, 2022
  • Archivos de alojamiento en el servidor web ESP32 desde la tarjeta MicroSD agosto 5, 2022
  • Medidas eléctricas para 6 canales (hardware) agosto 4, 2022
  • Monitor de energía de precisión con pantalla y salida de datos agosto 3, 2022

Ultimos comentarios

  • Terrence en Retropie en Debian / Ubuntu / Mint
  • Monitor de energía de precisión con pantalla y salida de datos – Soloelectronicos.com en Visualización gráfica en tiempo real del consumo eléctrico en ca
  • Guadalupe en Reparar una cámara Ip
  • Juan Pablo González en Cómo añadir una entrada de audio externa a un equipo que no la tiene y añadir otras mejoras
  • soloelectronicos en Fuente de alimentacion de 12Voltios de más 18 amperios

Pruebe GRATIS por un mes Amazon prime con video,musica, fotos,juego s y envios gratuitos

(haga click en la imagen)

Etiquetas

.NET Micro Framework alarma casera alarma Netduino amazon ambilight barato ambilight casero Android App Inventor Arduino Autonomous Communities Bluetooth Business Catalonia cosm electric imp error netduino Facebook fuente de potencia ganar dinero Google google app engine google maps Gps impresion 3d interfaz de usuario internet de las cosas IOS IoT iPhone kindle LCD led lenguajes de programación libros electrónicos Light-emitting diode Linux M2M Mexico Microsoft Microsoft Windows Netduino netduino-plus Netduino 2 netduino 3 node.js Orange pi osciloscopio barato pachube pebble Python raspberry Raspberry Pi raspberry pi 3 raspbian Reloj Inteligente reloj inteligente para niños robot casero samsung sensor inteligente SlideShare Smartphone SmartQ SmartWatch Spain Television tinywebdb tutorial Netduino Twitter Visual Studio Wi-Fi Windows wordpress xively ZTE zte skate

Todos los post

  • 3d
  • 3g
  • adsense
  • alarma
  • Alarma Ventana
  • amazon
  • Android
  • android studio
  • app inventor
  • Apple
  • Apps
  • aprendizaje automatico
  • Arduino
  • Arduino;Netduino-Plus
  • at
  • atx
  • AUDIO
  • audio y video
  • automovil
  • azure
  • bases de datos
  • baterias
  • BBDD
  • Bicicleta Electrica
  • bitcoin
  • blogging
  • Blogs
  • bricked
  • bricolaje
  • bridge
  • busybox
  • c#
  • CAD
  • CATV
  • Cayenne
  • Centralita
  • ciberseguidad
  • circuito impreso
  • clon de raspbery
  • cloud
  • cloud computing
  • compilar android
  • comunicaciones e infraestructura de TI
  • conectores
  • Conexiones PC
  • Conexiones tv
  • consola serie
  • control de botones Netduino
  • control por internt
  • controlador bici electrica
  • controlar dispositivo desde internet
  • coordenadas
  • copia de raspberry
  • Coronavirus
  • crowdfunding
  • curiosidades
  • cursos
  • Desarrollo aplicaciones moviles
  • desarrollo de aplicaciones
  • DISEÑO
  • diseñar una esfera para pebble
  • diseño web
  • Dolby Digital
  • Dolby Prologic
  • Domotica
  • dtmf
  • dts
  • ebooks
  • edge computing
  • Edison
  • ehealh
  • electronica de consumo y de entretenimiento
  • Electronica de Potencia
  • electronica del automovil
  • Electronica General
  • energia
  • epad
  • ESP32
  • esp8266
  • exoesqueletos
  • fibra optica
  • firmware
  • Fon2100
  • Fonera
  • fuentes de alimentación
  • gadget
  • gadgets
  • Gafas inteligentes
  • gestion pulsadores Netrduino
  • Google
  • google maps
  • GPIO
  • GPRS
  • GPS
  • hacking
  • herramientas
  • hogar
  • homestation
  • HUD
  • iluminacion
  • Imagen y Sonido
  • Imagenio
  • impresion 3d
  • impresoras 3d
  • informatica
  • Infrarojos
  • Innovación
  • Innovacion Tecnologica
  • instalar worpdress en linux
  • Instrumentacion
  • Inteligencia Artificial
  • inteligencia  artificial
  • Internet
  • IoT
  • IRDA
  • java
  • JDM
  • juguetes
  • kindle
  • LCD
  • linux
  • Linux
  • M2M
  • Megafonia
  • microcontroladores
  • micromovilidad
  • Microsoft
  • monetizar tu blog en wordpress
  • movilidad
  • movistar
  • Multimedia
  • navegador
  • Netduino
  • netduino-plus
  • node.js
  • noticias tecnológicas
  • ofimatica
  • open hardware
  • open hw
  • open source
  • open-wrt
  • ora-03114
  • Oracle
  • Orange pi
  • ordenador
  • Ordenador de salón
  • Osicloscopio
  • pc
  • PC's
  • Pda
  • Pebble
  • Peltier
  • PIC
  • PIC-Basic
  • PIC16F84A
  • presentación remota
  • procesing
  • programacion
  • programar pebble
  • publicidad en wordpress.com
  • pulsadores netduino
  • Python
  • radio y telefonia movil
  • Raspberry
  • raspberry barata
  • Reactancia 12V
  • realidad aumentada
  • reciclaje
  • reconocimiento de imagenes
  • red
  • redes sociales
  • Reloj Inteligente
  • reparación mando a distancia
  • reparaciones
  • repetidor wifi
  • reusabilidad
  • reutlizacion
  • robotica
  • roomba
  • Router
  • Router bricked
  • router secundario
  • salud
  • Señal audio estereo
  • Señal Video
  • seguridad
  • seguridad infromatica
  • sensor
  • sensor de aparcamiento
  • sensor de sonido
  • sensor electromagnetico
  • sensor ultrasonidos
  • sensores
  • seo
  • servidor
  • sistemas operativos
  • skipe
  • smartphone
  • smartq-z1
  • smartwatches
  • supercondensadores
  • Symbian
  • tecnoretro
  • Telefonía
  • Telefono digital
  • Transmisores
  • transporte
  • Transportes alternativos
  • trucos caseros
  • Uncategorized
  • unix
  • Usb
  • UTILIDADES ORDENADORES
  • Utilidades y SW
  • vehiculos
  • version android
  • VoiP
  • watchdog Netduino
  • wereable
  • wereables
  • windows 10
  • Windows 11
  • windows 7
  • windows 8
  • Windows Azure
  • Windows Pocket PC
  • wordads
  • wordpress
  • xiaomi
  • zigbee
  • zt180
julio 2014
L M X J V S D
 123456
78910111213
14151617181920
21222324252627
28293031  
« Jun   Ago »

Blog Stats

  • 9.498.893 hits

Novedades de libros sobre Netduino

  • RSS - Entradas

Aviso legal

Soloelectronicos.com publica sus contenidos bajo licencia Creative Commons y cumple con la legislación vigente. Para más detalles consulte por favor el documento de aviso legal, política de privacidad y política de enlaces de afiliación.

Archivos

  • agosto 2022
  • julio 2022
  • junio 2022
  • mayo 2022
  • abril 2022
  • marzo 2022
  • febrero 2022
  • enero 2022
  • diciembre 2021
  • noviembre 2021
  • octubre 2021
  • septiembre 2021
  • agosto 2021
  • julio 2021
  • junio 2021
  • mayo 2021
  • abril 2021
  • marzo 2021
  • febrero 2021
  • enero 2021
  • diciembre 2020
  • noviembre 2020
  • octubre 2020
  • septiembre 2020
  • agosto 2020
  • julio 2020
  • junio 2020
  • mayo 2020
  • abril 2020
  • marzo 2020
  • febrero 2020
  • enero 2020
  • diciembre 2019
  • noviembre 2019
  • octubre 2019
  • septiembre 2019
  • agosto 2019
  • julio 2019
  • junio 2019
  • mayo 2019
  • abril 2019
  • marzo 2019
  • febrero 2019
  • enero 2019
  • diciembre 2018
  • noviembre 2018
  • octubre 2018
  • septiembre 2018
  • agosto 2018
  • julio 2018
  • junio 2018
  • mayo 2018
  • abril 2018
  • marzo 2018
  • febrero 2018
  • enero 2018
  • diciembre 2017
  • noviembre 2017
  • octubre 2017
  • septiembre 2017
  • agosto 2017
  • julio 2017
  • junio 2017
  • mayo 2017
  • abril 2017
  • marzo 2017
  • febrero 2017
  • enero 2017
  • diciembre 2016
  • noviembre 2016
  • octubre 2016
  • septiembre 2016
  • agosto 2016
  • julio 2016
  • junio 2016
  • mayo 2016
  • abril 2016
  • marzo 2016
  • febrero 2016
  • enero 2016
  • diciembre 2015
  • noviembre 2015
  • octubre 2015
  • septiembre 2015
  • agosto 2015
  • julio 2015
  • junio 2015
  • mayo 2015
  • abril 2015
  • marzo 2015
  • febrero 2015
  • enero 2015
  • diciembre 2014
  • noviembre 2014
  • octubre 2014
  • septiembre 2014
  • agosto 2014
  • julio 2014
  • junio 2014
  • mayo 2014
  • abril 2014
  • marzo 2014
  • febrero 2014
  • enero 2014
  • diciembre 2013
  • noviembre 2013
  • octubre 2013
  • septiembre 2013
  • agosto 2013
  • julio 2013
  • junio 2013
  • mayo 2013
  • abril 2013
  • marzo 2013
  • febrero 2013
  • enero 2013
  • diciembre 2012
  • noviembre 2012
  • octubre 2012
  • septiembre 2012
  • agosto 2012
  • julio 2012
  • mayo 2012
  • abril 2012
  • marzo 2012
  • febrero 2012
  • enero 2012
  • noviembre 2011
  • septiembre 2011
  • agosto 2011
  • julio 2011
  • junio 2011
  • abril 2011
  • marzo 2011
  • febrero 2011
  • enero 2011
  • diciembre 2010
  • febrero 2010
  • enero 2010
  • diciembre 2009
  • septiembre 2009
  • diciembre 2008
  • agosto 2008
  • julio 2008

Herramientas

  • Registro
  • Acceder
  • Feed de entradas
  • Feed de comentarios
  • WordPress.com

Raspberry Pi 3

Por menos de 35€ se puede contar con esta versátil placa ,la cual es una autentica navaja suiza sirviendo como NAS, cámara de seguridad, sistema de alarma, emulación ambilight, centro multimedia, ordenador infantil y un largo etc

Miembro bloggers.net

Este blog en imagenes

espejonew
circuito modif
2015-10-04_23h45_27
uso del osci
sensordehumo
portada libro

Novedades de soloelectronicos

julio 2014
L M X J V S D
 123456
78910111213
14151617181920
21222324252627
28293031  
« Jun   Ago »

Twitter

  • RT @TheFigen: Plastic bottles that turn into flower pots... https://t.co/GVK3FiSjwD 2 days ago
  • Muy ingenioso twitter.com/carlosclavijo2… 2 days ago
  • RT @jmalvpal: The World’s Top 10 Most Spoken Languages / via @VisualCap https://t.co/CPEDNGUObX 2 days ago
  • Obtener la fecha y hora del servidor NTP con ESP32 soloelectronicos.com/2022/08/11/obt… 4 days ago
  • Cómo usar un módulo de reloj en tiempo real (DS3231) soloelectronicos.com/2022/08/08/com… 6 days ago
Follow @soloelectronico

SeguricasaV4

Con esta app podemos controlar los accesos de nuestra vivienda o local gracias a un viejo terminal averiado o que ya no use
Las soluciones de seguridad y monitorizacin de suministro electrico que existen en el mercado suelen tener un coste alto y suelen llevar implícita una cuota periódica, SEGURICASAV4 resuelve ese problema si cuenta conun viejo terminal que ya no use

Libro recomendado

Netduino 2 en español

Carlos Rodriguez Navarro

Paperblog
Crea un blog o un sitio web gratuitos con WordPress.com.
  • Seguir Siguiendo
    • Soloelectronicos.com
    • Únete a 3.650 seguidores más
    • ¿Ya tienes una cuenta de WordPress.com? Accede ahora.
    • Soloelectronicos.com
    • Personalizar
    • Seguir Siguiendo
    • Regístrate
    • Acceder
    • Denunciar este contenido
    • Ver sitio web en el Lector
    • Gestionar las suscripciones
    • Contraer esta barra
 

Cargando comentarios...
 

    Privacidad y cookies: este sitio utiliza cookies. Al continuar utilizando esta web, aceptas su uso.
    Para obtener más información, incluido cómo controlar las cookies, consulta aquí: Our Cookie Policy
    A %d blogueros les gusta esto: