2013-09-02 4 views
0
#!/usr/bin/perl -w 

use WWW::Facebook::API; 
use WWW::Facebook::API::Auth; 
use WWW::Facebook::API::Canvas; 
use HTTP::Request; 
use LWP; 

use CGI;        # load CGI routines 
$q = CGI->new;       # create new CGI object 
print $q->header,      # create the HTTP header 
    $q->start_html('Facebook App'),  # start the HTML 
    $q->h1('Facebook Authentication'), # level 1 header 
    $q->end_html;       # end the HTML 

my $facebook_api  = '---------------'; 
my $facebook_secret = '----------------------------'; 
my $facebook_clientid = '-----------------------------------'; 

my $client = WWW::Facebook::API->new(
    desktop  => 0, 
    api_version => '1.0', 
    api_key  => $facebook_api, 
    secret  => $facebook_secret, 

); 

$client->app_id($facebook_clientid); 
print $q->redirect($client->get_login_url()); 

В веб-браузере отображается в виде302 Найдено при запуске Perl скрипт

Facebook Authentication 
Status: 302 Found Location: http://www.facebook.com/login.php? api_key= - ----------------&v=1.0 

Как исправить эту проблему CGI. Я запускаю этот скрипт perl на сервере apache ubuntu.

ответ

4

Вы напечатать заголовок HTTP здесь:

print $q->header 

Затем вы печатаете другой заголовок HTTP здесь:

print $q->redirect($client->get_login_url()); 

Сообщение HTTP может иметь только один набор заголовков. Если вы отправляете 302 редирект, то нет никакой необходимости напечатать любой HTML либо, так что избавиться от всего этого:

print $q->header,       # create the HTTP header 
$q->start_html('Facebook App'),  # start the HTML 
$q->h1('Facebook Authentication'), # level 1 header 
$q->end_html;       # end the HTML 
+0

Но когда я использую один и тот же код в другой машине [Который имеющий низкая конфигурация] работает нормально. В чем причина этого. – JacobDeepak

+1

Кто знает? Возможно, у вас разные версии модулей или настроек. Каждый раз, когда кто-то говорит «Я использую тот же код ...», я узнаю, что это не так. :) –

Смежные вопросы