El token de acceso extendido de Facebook no funciona correctamente

Estoy teniendo problemas desde que Facebook ha eliminado el permiso offline_access.

Probé 2 cosas:

  1. Estoy haciendo la llamada como lo sugiere Facebook.

    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 
  2. También probé el SDK de Android, que utiliza una intención para obtener un token de acceso extendido:

     intent.setClassName("com.facebook.katana", "com.facebook.katana.platform.TokenRefreshService"); 

En developers.facebook.com establecí mi aplicación en "Nativo / Escritorio".

También deshabilité el offline_access en la configuración de la aplicación.

Quité los permisos antiguos de mi cuenta de Facebook antes de intentarlo.

Ambos métodos me proporcionan fichas de 24 horas. Tal vez alguien me puede ayudar con hacer la llamada correcta para obtener un token de 60 días?

Vi un buen número de informes de errores sobre este problema, pero también que se resolvieron. Parece que no en mi caso.

    3 Solutions collect form web for “El token de acceso extendido de Facebook no funciona correctamente”

    Utilice la siguiente función para obtener el token de acceso extendido: public function getExtendedAccessToken () {

     try { // need to circumvent json_decode by calling _oauthRequest // directly, since response isn't JSON format. $access_token_response = $this->_oauthRequest( $this->getUrl('graph', '/oauth/access_token'), $params = array( 'client_id' => $this->getAppId(), 'client_secret' => $this->getApiSecret(), 'grant_type'=>'fb_exchange_token', 'fb_exchange_token'=>$this->getAccessToken(), )); } catch (FacebookApiException $e) { // most likely that user very recently revoked authorization. // In any event, we don't have an access token, so say so. return false; } if (empty($access_token_response)) { return false; } $response_params = array(); parse_str($access_token_response, $response_params); if (!isset($response_params['access_token'])) { return false; } return $response_params['access_token']; 

    }

    ¿Ha probado para ver si la ficha dura más de 24 horas? Según la documentación, en algunos casos, sólo se actualiza el tiempo de caducidad mientras el token permanece igual:

    El access_token devuelto tendrá un tiempo de caducidad de larga duración reciente, sin embargo, el access_token mismo puede o no ser el mismo que el acceso_token de larga duración previamente concedido.

    Suponiendo que está utilizando el SDK de Facebook, allready tiene un método de construir en exactamente eso.

     facebook.extendAccessTokenIfNeeded(this, null); 

    Siendo este el contexto y nulo siendo serviceListener.

    También puede utilizar extendAccessToken , mismo director

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.