2011-01-14 19 views
75

Estoy tratando de integrar mi proyecto con Facebook. Al principio, estoy dando pequeños pasos e intento ingresar, obtener una sesión de Facebook y obtener algunos datos de usuario. Lo estoy desarrollando localmente así que la configuración de mi aplicación de Facebook es:Facebook API error 191

site URL: http://127.0.0.1:8888/mySite/ 

El lienzo URL es el mismo que el anterior. No he especificado un dominio del sitio.

Sin embargo, al hacer clic en el botón de inicio de sesión, me sale un error:

API Error Code: 191 
API Error Description: The specified URL is not owned by the application 
Error Message: redirect_uri is not owned by the application. 

Por el momento no he escrito ningún código del lado del servidor para hacer frente a las redirecciones, etc todo lo que he hecho es agregar el JavaScript SDK basado en el tutorial en Facebook for Websites.

¿Qué he hecho mal? Obviamente, tiene algo que ver con la configuración de mi aplicación de Facebook, ¡pero no puedo ver qué!

+0

Para lectores: tenga en cuenta que esta pregunta y la respuesta aceptada se aplican tanto al servidor local y al desarrollo/prueba, como a servidores y URL reales. – Stefano

Respuesta

87

ACTUALIZACIÓN:
Para responder a la API Código de error: 191
El redirect_uri debe ser igual (o relativa) a la URL del sitio.
enter image description here

Consejo: URL Uso de base en lugar de URL completo que dirigen a sitios específicos.

No recomendado: Por ejemplo, si se utiliza www.mydomain.com/fb/test.html como su URL del sitio y tener www.mydomain.com/fb/secondPage.html como redirect_uri esto le dará el error 191.

RECOMENDADO: Así que en lugar de su URL del sitio han ajustado a una URL base como: www.mydomain.com/ O www.mydomain.com/fb/.


Fui a través del Facebook Python sample application hoy en día, y yo era conmocionado se señale claramente que se puede utilizar http://localhost:8080/ como URL del sitio si está desarrollando a nivel local:

Configure the Site URL, and point it to your Web Server. If you're developing locally, you can use http://localhost:8080/

Mientras fue seguro de que no puede hacer eso, basado en mi propia experiencia (prueba muy antigua) parece que en realidad CAN ¡prueba tu aplicación de Facebook localmente!

así que cogí una vieja aplicación de la mina y editar su nombre, y el URL del sitio URL de la lona: URL del sitio : http://localhost:80/fblocal/

He descargado la última Facebook PHP-SDK, y la arrojó en mi carpeta xampp/htdocs/fblocal/.

¡Pero tengo el mismo error que el tuyo!Noté que XAMPP está haciendo una redirección automática a http://localhost/fblocal/ así que cambié la configuración simplemente http://localhost/fblocal/ y el error se había ido PERO tuve que quitar la aplicación (de privacy settings) y volver a instalar mi aplicación y aquí están los resultados:
alt text

Después de eso, le pidió el permiso publish_stream, y yo era capaz de publicar al perfil (utilizando el PHP-SDK):

$user = $facebook->getUser(); 
if ($user) { 
    try { 
     $post = $facebook->api('/me/feed', 'post', array('message'=>'Hello World, from localhost!')); 
    } catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
    } 
} 

resultados: alt text

+1

Um, así que ahora estoy confundido. ¿Qué pasa con esta respuesta: http://stackoverflow.com/questions/4633846/facebook-app-development – musoNic80

+1

I * GUESS * lo que quería decir es que puede probar su aplicación localmente, pero cualquier interacción con Facebook requerirá la publicación de su sitio web/dominio. por ejemplo, si tienes un juego flash, puedes probarlo localmente antes de hacerlo en FB canvas. En cuanto al código posterior, él explica cómo puede proteger su sitio web ** live ** para que no tenga acceso hasta que el desarrollo haya finalizado y esté listo para comenzar. – ifaour

+2

Hasta ahora todo bien! ¡He llegado al diálogo de inicio de sesión y pido permiso! Aún no he tenido la oportunidad de probar la obtención de algunos datos reales, pero espero que la respuesta se acepte cuando lo haga. Woohoo! – musoNic80

8

Esto es solo por un error de URL.

Cualquiera que sea la URL del sitio web especificada debería ser correcta.

Mencioné la URL del sitio web como http://localhost:3000/ y el dominio como localhost, pero en mi navegador estaba ejecutando http://0.0.0.0:3000/.

Cuando ejecuté el servidor como localhost:3000, resolvió el problema.

Como mencioné, la URL del sitio como localhost Facebook redireccionará a la misma, si estamos ejecutando 0.0.0.0:3000, se generará el error de que "La URL dada no está permitida por la configuración de la aplicación".

2

También estaba enfrentando el mismo problema cuando uso el método de autenticación de Facebook. Pero rectifico ese problema con los siguientes cambios en la API de Facebook (Apps >> My App >> Basic).

  1. que eliminan la url que he dado en ===>aplicación en Facebook (lienzo URL)
  2. me dio URL del sitio sólo en ===>sitio web con Facebook Inicia sesión opción

Luego di ese AppId y App Secret en mi página web.

Al hacer clic en el botón de inicio de sesión, solicita permisos de acceso y luego lo redirige para dar url (sitio web con Facebook Login).

0

tenía el mismo problema:

$params = array('redirect_uri' => 'facebook.com/pages/foobar-dev'); 
$facebook->getLoginUrl($params); 

Cuando cambié redirect_uri desde la página devloper a la página en vivo, 191 de error se acercó.

Así que suprimen los $ params:

$facebook->getLoginUrl(); 

Después de la aplicación de solicitud de FB ahora redirige a la misma URL de la aplicación Fe: my.domain.com

Lo que ahora está comprobando en el índice .php de mi aplicación si estoy dentro de FB iframe o no. Si no, me redirige a la página de FB en vivo, es decir,:

$app = 'facebook.com/pages/foobar-live'; 
$rd = (isset($_SERVER['HTTP_REFERER'])) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) : false; 
if ($rd == 'apps.facebook.com' || (!isset($_REQUEST['signed_request']))) { 
    echo '<script>window.parent.location = "'.$app.'";</script>'; 
    die(); 
} 
0

he notado también que, incluso si se especifica su sitio web bajo secion - sitio web con Facebook Login -> URL del sitio como por ejemplo, http://example.com, pero si la sección Dominios de la aplicación está vacía y abre el sitio web como www.example.com, también obtendrá este error. Para evitarlo en la sección "Dominios de la aplicación" escriba example.com, que permitirá subdominios, como www.example.com, algo.example.com, etc.

11

Para mí, era un dominio de aplicación faltante. Ingresa a la aplicación y asegúrate de que tienes la raíz de tu sitio configurada como dominio de la aplicación. Ver captura de pantalla.

app domains is in the basic settings of your app

+0

Esta respuesta no está relacionada con la pregunta ya que el póster original se está desarrollando localmente y el campo Dominios de aplicación no permite ni localhost ni 127.0.0.1: http://flic.kr/p/kHqiny – Vince

+4

La pregunta del asker ya está resuelta. Esta respuesta tiene la intención de ser útil para las personas con un problema similar, que piensan que esta pregunta los ayudará en función del gran título en negrita. Ahora puede. –

0

algo que me gustaría añadir, ya que este es el error 191 primera pregunta en Google:

Al redirigir a facebook en lugar de su propio sitio para una solicitud firmada, es posible que experimente este error si el usuario tiene una navegación segura y su aplicación se redirecciona a Facebook sin SSL.

0

Trabajando localmente ... No pude conseguir la API api para trabajar, pero la aplicación api funcionó casi de inmediato sin problemas.