drupal authentication-authorization – Redirigir a la página de validación externa usando oauth con drupal_http_request ()

Pregunta:

Estoy trabajando en un módulo para integrarlo con la API de Piryx y, según la documentación de OAuth , debería ser redirigido a una página externa donde el usuario pueda permitir el acceso a mi aplicación. El problema es que estoy usando drupal_http_request ():

$response = drupal_http_request($url, $headers, 'GET', $data);

para obtener los datos, y el marcado de la página se devuelve en $ response ['data'] en lugar de redirigirme a la página externa (si coloco la URL en mi navegador, aparece la página correctamente). ¿Hay algo que pueda hacer para redirigir a la URL externa para que el usuario pueda permitir el acceso, o simplemente necesito de alguna manera usar el marcado para mostrarlo en mi sitio?

Gracias.

Respuesta:

En el caso de que la solicitud se redirija a una URL diferente, $response->code es 301 y $response->redirect_url es la URL de redireccionamiento. Si la solicitud es redireccionada, puede llamar a drupal_http_request() usando $response->redirect_url como nueva URL.

Vea aggregator_aggregator_fetch () como ejemplo de la función de Drupal que verifica que la solicitud está siendo redirigida.

  // Process HTTP response code.
  switch ($result->code) {
    case 304:
      break;
    case 301:
      $feed->url = $result->redirect_url;
      // Do not break here.
    case 200:
    case 302:
    case 307:
      if (!isset($result->data)) {
        $result->data = '';
      }
      if (!isset($result->headers)) {
        $result->headers = array();
      }
      $feed->source_string = $result->data;
      $feed->http_headers = $result->headers;
      break;
    default:
      watchdog('aggregator', 'The feed from %site seems to be broken, due to "%error".', array('%site' => $feed->title, '%error' => $result->code . ' ' . $result->error), WATCHDOG_WARNING);
      drupal_set_message(t('The feed from %site seems to be broken, because of error "%error".', array('%site' => $feed->title, '%error' => $result->code . ' ' . $result->error)));
  }

Si desea redirigir a los usuarios a $result->redirect_url , y no solicitar esa URL con drupal_http_request() , use el siguiente código.

drupal_goto($response->redirect_url, array('absolute' => TRUE));

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım