2011-02-16 24 views
7

estoy tratando de incluir a los usuarios imagen de perfil de facebook, que funciona bien, pero la cosa es cuando se quiere incluirlo en una página segura SSL. No puedo encontrar la forma de cargar la imagen desde una ubicación segura. Mediante el siguiente enlace a la foto de perfil de usuarios:Cargando perfil de Facebook de forma segura

https://graph.facebook.com/<FB_ID HERE>/picture?type=square 

Aunque uso https no quede cargado de forma segura (navegador dice que la página es sólo parcialmente encriptados). Y esto no es extraño, ya que el enlace simplemente redirige a las imágenes, por ejemplo para mi perfil de imagen:

https://graph.facebook.com/Bazze/picture?type=square 

Esto hará que la imagen de:

http://profile.ak.fbcdn.net/hprofile-ak-snc4/161513_633115680_6792455_q.jpg 

Tenga en cuenta que esto no es un seguro ubicación.

¿Alguien sabe cómo cargar la imagen de perfil de forma segura a través del protocolo https?

Gracias!

Respuesta

2
  1. Es un lugar seguro, que no es sólo una redirección segura
  2. Todo lo que se puede hacer es asegurarse de que están utilizando una solicitud segura al llamar a la API gráfica, después de que Facebook se hará cargo de la comunicación y se puede hacer nada.
2

Bueno, https://graph.facebook.com/Bazze/picture?type=square es un redireccionamiento 302 a http: // .... Pero tenga en cuenta que https: // ... todavía funciona (example).

por lo que parece una solución consiste en analizar el 302 a ti mismo, insertar la 's' en el lugar adecuado, a continuación, buscar la imagen. Pero a la baja, la página enlazada anterior tiene errores de certificado, y no hay una buena manera de arreglar eso.

(No digo que esto es una buena respuesta...)

+0

Pero si incluyo una imagen con https: // gráfica ... (seguro) el navegador sigue reclamando la página sólo está parcialmente cifrado (sí, estoy seguro de que es el enlace foto de perfil fb eso lo está causando). – Bazze

+0

Estoy diciendo que debe incluir una imagen con https: //profile.ak.fbcdn.net/... que también requiere determinar el '...' correcto, al analizar la redirección 302. Pero aunque eso eliminará el problema de "parcialmente encriptado", introducirá un problema de error de certificado. – Jumbogram

2

El redireccionamiento 302 tendrá la URL de su imagen como se indica en la documentación de Open Graph API.

El tiene que cambiar a partir de: /http profile.ak.fbcdn.net/ a: /https fbcdn-profile-a.akamaihd.net/

Y a partir de:/http static.ak .fbcdn.net/a:/https s-static.ak.fbcdn.net/

¡¡Realmente creo que FB debería hacer eso en sus API !!!!

-2

Uso ***http***://graph.facebook.com/Bazze/picture?type=square en lugar de **https**://graph.facebook.com/Bazze/picture?type=square

1

Usted podría hacer de proxy a través de su propio servidor. Configure una secuencia de comandos que recupere la imagen de Facebook y la vuelva a enviar a través de SSL.

Para el Ejemplo

<?php 
    $path=$_GET['path']; 
    if (stristr($path, "fbcdn.")==FALSE && stristr($path, "facebook.")==FALSE) 
    { 
     echo "ERROR"; 
     exit; 
    } 
    header("Content-Description: Facebook Proxied File"); 
    header("Content-Type: image"); 
    header("Content-Disposition: attachment; filename=".$path); 
    @readfile($path); 
?> 

Tomado de

http://www.permadi.com/blog/2010/12/loading-facebook-profile-picture-into-flash-swf-using-open-graph-api/

accede a través https://yourdomainhere.com/proxy.php?path=URLENCODED-IMG-URI debe devolver la hace Userpic a través de SSL.

+0

Esto podría haber sido una solución, pero Facebook ha corregido este "error" para que las imágenes ahora se sirvan de forma segura, por lo que mi problema está resuelto. Gracias por la respuesta sin embargo. – Bazze

9

Add return_ssl_resources=1 a su llamada Gráfico:

https://graph.facebook.com/<FB_ID>/picture?type=square&return_ssl_resources=1 

Ésta es la manera adecuada para obtener una imagen de SSL servido; la redirección será a un servidor https con un certificado SSL apropiado.


actualización: Parece que Facebook ahora automáticamente le dará una redirección a https imágenes alojadas cuando se utiliza https://graph.facebook.com, por lo que el parámetro return_ssl_resources ya no es necesario.

El uso de http://graph.facebook.com todavía le consigue una imagen alojada en http.

+0

sí ... este es el camino :) – Lix

+0

Estoy aprovechando esta respuesta para otras personas que podrían terminar aquí. Actualmente, solo cambiar el enlace a la imagen de http a https funcionará. Un simple 'image_url.sub (/ http: /," https: ")' funcionará. – Ashitaka

+2

@Ashitaka: parece que Facebook ha cambiado recientemente el servidor de gráficos para manejar automáticamente http/https. He actualizado la respuesta. – josh3736

Cuestiones relacionadas