2010-05-17 10 views
11

C'è un plugin di Outlook chiamato Xobni che ha una funzione davvero interessante, se un contatto ha un indirizzo email, recupererà l'immagine del profilo di quel contatto e la mostrerà. Le domande frequenti sono le seguenti:Come posso ottenere l'immagine del profilo di Facebook via email?

Xobni invia un indirizzo di posta elettronica crittografato a Facebook per recuperare il profilo di Facebook per la persona che è attualmente visualizzata nella barra laterale di Xobni. Il tuo profilo Facebook non viene mai modificato da Xobni e tutte le impostazioni della privacy di Facebook vengono seguite rigorosamente durante la visualizzazione di altri profili.

Mi piacerebbe duplicare questa funzionalità. Tuttavia, non riesco a capire quale chiamata API stanno utilizzando. Sto assumendo quando dicono "indirizzo email criptato" che è un termine per i laici per l'hash della posta elettronica. Una volta che il nome utente è stato derivato, il grafico api sembra ideale per prelevare effettivamente l'immagine, ma ho problemi a passare dall'hash email all'ID profilo.

+0

Ulteriori informazioni: ho creato uno sniffer sulla mia macchina per monitorare le chiamate in uscita, e ho scoperto che si tratta di un inedito, probabilmente non metodo pubblico chiamato facebook.users.getByEmail. Ci giocherò con questo, ma non sono ottimista. Qualcun altro ha qualche idea su come passare dalla posta elettronica a uid? – Forbini

+0

Se mai capisci questo fammi sapere - il più vicino che ho ottenuto è che se hai effettuato l'accesso puoi ottenere l'ID profilo analizzando la pagina di ricerca, che puoi dare un indirizzo email. Ciò richiede che il tuo script/programma invii cookie validi registrati con la richiesta della pagina di ricerca, anche se ... – Mala

risposta

3

Sto cercando un modo per fare questa cosa esatta ... Nessun tentativo ha funzionato ancora.

Qualcuno è stato in grado di trovare una soluzione?

Aggiornamento: Ho messo insieme questo snippet in PHP. È l'unico modo in cui sono riuscito a raggiungere il mio obiettivo. Io non sono sicuro di come Xobni sta facendo (sono sicuro che essi sono meno invadenti su di esso)

<?php 

/* Email to Search By */ 
$eml = '[email protected]'; 

/* This is where we are going to search.. */ 
$url = 'http://www.facebook.com/search.php?q=' . urlencode($eml); 

/* Fetch using cURL */ 
$ch = curl_init(); 

/* Set cURL Options */ 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

/* Tell Facebook that we are using a valid browser */ 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'); 

/* Execute cURL, get Response */ 
$response = curl_exec($ch); 

/* Check HTTP Code */ 
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

/* Close cURL */ 
curl_close($ch); 

/* 200 Response! */ 
if ($response_code == 200) { 

    /* Parse HTML Response */ 
    $dom = new DOMDocument(); 
    @$dom->loadHTML($response); 

    /* What we are looking for */ 
    $match = 'http://www.facebook.com/profile.php?id='; 

    /* Facebook UIDs */ 
    $uids = array(); 

    /* Find all Anchors */ 
    $anchors = $dom->getElementsByTagName('a'); 
    foreach ($anchors as $anchor) { 
     $href = $anchor->getAttribute('href'); 
     if (stristr($href, $match) !== false) { 
      $uids[] = str_replace($match, '', $href); 
     } 
    } 

    /* Found Facebook Users */ 
    if (!empty($uids)) { 

     /* Return Unique UIDs */ 
     $uids = array_unique($uids); 

     /* Show Results */ 
     foreach ($uids as $uid) { 

      /* Profile Picture */ 
      echo '<img src="http://graph.facebook.com/' . $uid. '/picture" alt="' . $uid . '" />'; 

     } 

    } 

} 


? 
+0

Ok. Risulta che questo non funzionerà al 100%. La corrispondenza $ cerca il profilo.php? Id = collegamento mentre alcuni utenti di Facebook hanno impostato i loro collegamenti personalizzati che sono facebook.com/MyAliasName. (dannazione! Pensavo di averlo fatto) Lavorando per capire dove altro si possa trovare questa informazione. – McHerbie

+1

Aggiornamento: http://zesty.ca/facebook/ – McHerbie

13

è possibile interrogare il seguente URL per ottenere id utente (se presente su Facebook):

https://graph.facebook.com/search?access_token=YOUR_ACCESS_TOKEN&q=EMAIL_ADDRESS_URL_ENCODED&type=user 

Quindi <img src="https://graph.facebook.com/USER_ID/picture"> fornisce l'immagine.

Maggiori informazioni: article at codinglogs.com

2

Molte grazie @McHerbie, mi hai dato la chiave per ottenere finalmente il mio codice di lavoro. La chiave è la funzione urlencode() per codificare la posta !!! grazie, questo è il mio codice di lavoro utilizzando PHP Simple HTML DOM Parser:

public function getFacebookPictureByScrapping($email="[email protected]", $file="fbPicture.jpg") { 
      require_once('protected/extensions/simplehtmldom/simple_html_dom.php'); 
      $userEmail = urlencode($email); 

      ini_set('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'); 

      $url = "http://www.facebook.com/search.php?q=$userEmail&type=all&init=srp"; 
      $html = new simple_html_dom(); 
      $html = file_get_html($url); 

      if (is_object($picture = $html->find(".uiList .img",0))) { 
       $image = file_get_contents($picture->src, false); 
       file_put_contents($file); 
       return $file; 
      } else { 
       return null; 
      } 
    } 
+0

da quello che so, non è più possibile ottenere immagini del profilo – aleksdj

1

So che questo post è un po 'vecchio, ma solo ora trovato - si potrebbe provare l'API FullContact persona (full disclosure - I' m di parte, io lavoro per loro):

http://www.fullcontact.com/developer/

da un lato, tirerà i profili di social media associati quando si query basata su e-mail in modo che si possono trovare e tirare il profilo associato ... ma d'altra parte, è anche possibile risparmiare un po 'di tempo & usarlo per estrarre direttamente le immagini del profilo.

Lo schema risposta include:

"photos": 
    [ 
    { 
     "typeId": [photo type], 
     "typeName": [photo type name], 
     "url": [photo url], 
     "isPrimary": [boolean] 
    } 
    ] 

Maggiori informazioni: http://www.fullcontact.com/developer/docs/person/#lookup-by-email-3

+1

Leggere la sezione delle FAQ che ho postato prima di postare più risposte promozionali. –

+0

Siete i benvenuti :) –

3

Non è più possibile cercare informazioni utente con indirizzo e-mail via Facebook Graph API. Mentre funziona ancora se hai l'ID utente di Facebook, ma se non riesci a ottenere l'ID di Facebook con l'API di ricerca, non puoi più farlo.

https://developers.facebook.com/x/bugs/453298034751100/

L'API restituisce la seguente risposta:

{ 
    "error": { 
     "message": "(#200) Must have a valid access_token to access this endpoint", 
     "type": "OAuthException", 
     "code": 200 
    } 
} 
Problemi correlati