2012-10-03 29 views

Respuesta

15

Ver facebook developers:

Mediante el uso de un token de acceso de usuario de larga duración, la consulta de la [Usuario ID]/cuentas de punto final proporcionará ahora página tokens de acceso que no expiran para las páginas que una el usuario se las arregla

Por lo tanto, hay que cambiar el token de corta inicial para un identificador de longlived con una llamada del lado del servidor:

https://graph.facebook.com/oauth/access_token? 
client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN 

Y luego me pregunta/cuentas con esa señal longlived. Sin duda lo que funciona para nosotros, es decir, los programas de depuración: 'Expira: Nunca'


edición - nuestro proceso

Por lo tanto, lo que hacemos es:

  • primera client side authentication con nuestra aplicación donde obtenemos un "código" después de que el usuario acepta los permisos solicitados y conecta su cuenta con nuestra aplicación

    https://www.facebook.com/dialog/oauth? client_id = YOUR_APP_ID & redirect_uri = YOUR_REDIRECT_URI & alcance = COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES & response_type = código

  • Ahora en nuestra aplicación de servidor que utilizamos server side authentication para intercambiar código de acceso de ficha:

    https://graph.facebook.com/oauth/access_token? client_id = YOUR_APP_ID & redirect_uri = YOUR_REDIRECT_URI & client_secret = YOUR_APP_SECRET & código = CODE_GENERATED_BY_FACEBOOK

  • Con esta señal_acceso hacemos el intercambio del lado del servidor como se describe anteriormente

  • Ahora solicitamos me/cuentas y la señal_acceso resultante es siempre válida

Espero que ayude

+1

gracias a Pete, pero cuando hago esa llamada i tener esta respuesta de error { "error": { "mensaje": "Error desconocido producido. ", " tipo ":" OAuthException ", " código ": 1 } } –

+0

EXISTING_ACCESS_TOKEN es el token de la aplicación o el token de la página? tal vez echo de menos algo :( –

+2

@Pete: ¿Estás seguro de que el depurador muestra 'Expira: Nunca' porque para mí muestra' Expira: 1354445684 (en aproximadamente 2 meses) ' – RanRag

1

Ok, me llevó aproximadamente una semana de investigación, pero esta es mi solución. en el https://developers.facebook.com/tools/explorer/, asegúrese de tener manage_page como parte de su access_token.después de que el uso de este código con su ID de aplicación, en secreto, y redirigir:

<?php 
    app_id = "APP_ID"; 
    $app_secret = "APP_SECERET"; 
    $post_login_url = "REDIRECT_URL"; 


    $code = $_REQUEST['code']; 

    //Obtain the access_token with publish_stream permission 
    if(empty($code)){ 
     $dialog_url= "http://www.facebook.com/dialog/oauth?" 
     . "client_id=" . $app_id 
     . "&redirect_uri=" . urlencode($post_login_url) 
     . "&COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES"; 
     echo("<script>top.location.href='" . $dialog_url 
     . "'</script>"); 
    } 
    else { 


     $token_url="https://graph.facebook.com/oauth/access_token?" 
     . "client_id=" . $app_id 
     . "&redirect_uri=". urlencode($post_login_url) 
     . "&client_secret=" . $app_secret 
     . "&code=" . $code; 
     $response = file_get_contents($token_url); 
     $params = null; 
     parse_str($response, $params); 
     $access_token = $params['access_token']; 
     echo 'access token: ' . $access_token.'<br>'; 

     if($access_token){ 


      $token_url="https://graph.facebook.com/oauth/access_token?" 
     . "client_id=" . $app_id 
     . "&redirect_uri=". urlencode($post_login_url) 
     . "&client_secret=" . $app_secret 
     .'&grant_type=fb_exchange_token' 
     . "&fb_exchange_token=" . $access_token; 
     $response = file_get_contents($token_url); 
     $access_token = $params['access_token']; 
     echo 'new access token: '.$access_token; 

     } 
    }*/ 

?> 

Después de que copia el 'nuevo token de acceso' y volver a https://developers.facebook.com/tools/explorer/ Al llegar allí pasado en su nuevo token de acceso en el acceso campo de token A continuación, haz clic en enviar. Después de eso en el nodo verá + _ ___ haga clic en esto y desplácese hacia abajo a las cuentas y haga clic en eso. busque la página para la que necesita el token de acceso y cópiela y péguelo en el campo clave de acceso. haga clic en depuración y verá que nunca caducará. guarda ese token, seguirá siendo válido siempre y cuando no restablezcas el secreto de tus aplicaciones.

4

He simplificado la respuesta de Pete un poco y añadí el paso para conseguir un sin límite de token de acceso la página:

  1. acceso a la siguiente URL y tenga en cuenta el token de acceso devuelto dentro de la barra de direcciones del navegador:

    https://www.facebook.com/dialog/oauth?client_id=APP_ID&redirect_uri=REDIRECT_URI&scope=manage_pages,publish_stream&response_type=token

  2. acceso a la siguiente URL y dentro de los datos devueltos Busca l e deseada nombre de la página y tenga en cuenta el token de acceso:

    https://graph.facebook.com/me/accounts?access_token=ACCESS_TOKEN_RETURNED_FROM_STEP_1

  3. acceso a la siguiente URL y tenga en cuenta el token de acceso devuelto:

    https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=PAGES_ACCESS_TOKEN_FROM_STEP_2

  4. uso el Access Token Debugger para asegurar su token de acceso ID del perfil coincide con el ID de la página deseada y nunca expira

+0

¿Importa qué es el URI de redireccionamiento?¿Qué sucede si estamos haciendo algo que es de servidor a servidor y no involucra un navegador o una aplicación web? Puedo soportar algo si es necesario, pero preferiría no hacerlo. –

0

permite utilizar las siguientes API de Facebook para refrescar la vida de contadores a 60 días y justo cuando el elemento está a punto de expirar, llame a la misma API de nuevo con-in 60 días para refrescar su vida de nuevo a los 60 días a partir de ese punto del tiempo token expire está presente en expira parámetro y su valor es en segundos

Reemplazar CLIENT_ID y client_secret con su valor real

https://graph.facebook.com/oauth/access_token?client_id= & client_secret = & grant_type = fb_exchange_token & fb_exchange_token =

en señal_acceso, poner el valor del token real sin anexar "señal_acceso ="

2

Hay una manera mucho más fácil de hacer esto a partir del 2016 :)


  1. Ir a https://developers.facebook.com/tools/explorer

  2. Seleccione su aplicación en el menú desplegable en la parte superior derecha lado

  3. clic en el botón “obtener acceso simbólico” justo debajo de la lista desplegable de la aplicación en el lado derecho lado

  4. En en el menú desplegable, seleccione la página en la que desea obtener un token de acceso para. Si no ve sus páginas en la lista, deberá asegurarse de que esté configurado con la función de administrador de la página.También puede que tenga que hacer clic en "Obtener ficha de acceso a la página" en el menú desplegable, después de lo cual sus páginas aparecerán en el menú desplegable la próxima vez que haga clic en el botón "Obtener acceso Token".

  5. Haga clic en el icono de punto azul de exclamación en el “token de acceso” campo de entrada

  6. Haga clic en la opción “Abrir en Herramienta testigo de acceso” botón en el parte inferior derecha de la ventana emergente

  7. Haga clic en el botón "Extender token de acceso" para obtener un token que nunca caduca


información original de este artículo: https://www.rocketmarketinginc.com/blog/get-never-expiring-facebook-page-access-token/

Cuestiones relacionadas