Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: eduardogi en 28 Abril 2016, 10:33 am



Título: Facebook graph api HTTPS
Publicado por: eduardogi en 28 Abril 2016, 10:33 am
Hola amigos:
Estoy intentado obtener el numero de likes de una pagina de facebook. Para ello uso Graph API (https://developers.facebook.com/tools/explorer/) de facebook. Es sencilla de usar, solo hay que mandar una petición mediante GET y esta nos devolverá el valor que queramos.

Realizo la petición, y esta me contesta que necesita usar HTTPS, ya que es mas seguro para enviar el token. Para ello modifico el ejemplo que viene con las librerías. El problema es que no hago coincidir el fingerprint. Tampoco obtengo ninguna respuesta.

Este es mi código:
Código:
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>

const char* ssid     = "xxxxxx";
const char* password = "xxxxxx";

const char* host = "graph.facebook.com";
const char* url   = "/v2.6/200630963285751?fields=fan_count&access_token=";
const char* token = "xxxxxxxxxxx";
const char* fingerprint = "A0 4E AF B3 48 C2 6B 15 A8 C1 AA 87 A3 33 CA A3 CD EE C9 C9";
void setup() {
  Serial.begin(115200);
  delay(10);

  // We start by connecting to a WiFi network

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

int value = 0;

void loop() {
  delay(1000);
  ++value;
  // Use WiFiClient class to create TCP connections
  WiFiClientSecure client;

  Serial.print("connecting to ");
  Serial.println(host);
  const int httpPort = 443;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }

  if (client.verify(fingerprint, host)) {
    Serial.println("certificate matches");
  } else {
    Serial.println("certificate doesn't match");
  }

  // We now create a URI for the request
  // This will send the request to the server
  String paquete = String("GET ") + url + token + " HTTP/1.1\r\n" + "Host:" + host + "\r\n\r\n";
  Serial.println(paquete);
  client.print(paquete);

  delay(1000);

  // Read all the lines of the reply from server and print them to Serial
  while (client.available()) {
    String line = client.readStringUntil('\r');
    Serial.print(line);
  }

  Serial.println();
  Serial.println("closing connection");
}

Alguien me podría echar una mano. Un saludo.